﻿2026-06-21T11:53:55.7984605Z ##[group]Run ./traceable-reqs check --json
2026-06-21T11:53:55.7984990Z [36;1m./traceable-reqs check --json[0m
2026-06-21T11:53:55.7998689Z shell: /usr/bin/bash -e {0}
2026-06-21T11:53:55.7998917Z ##[endgroup]
2026-06-21T11:53:55.8859643Z {
2026-06-21T11:53:55.8859968Z   "schemaVersion": 1,
2026-06-21T11:53:55.8860273Z   "summary": {
2026-06-21T11:53:55.8860475Z     "requirementCount": 277,
2026-06-21T11:53:55.8860708Z     "completeCount": 277,
2026-06-21T11:53:55.8860902Z     "incompleteCount": 0,
2026-06-21T11:53:55.8861104Z     "findingCount": 0
2026-06-21T11:53:55.8861369Z   },
2026-06-21T11:53:55.8861535Z   "requirements": [
2026-06-21T11:53:55.8861703Z     {
2026-06-21T11:53:55.8861898Z       "id": "REQ-API-1",
2026-06-21T11:53:55.8862193Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T11:53:55.8862508Z       "requiredStages": [
2026-06-21T11:53:55.8862823Z         "impl",
2026-06-21T11:53:55.8863071Z         "unit",
2026-06-21T11:53:55.8863247Z         "int"
2026-06-21T11:53:55.8863457Z       ],
2026-06-21T11:53:55.8863623Z       "stages": {
2026-06-21T11:53:55.8863807Z         "doc": {
2026-06-21T11:53:55.8864112Z           "complete": false,
2026-06-21T11:53:55.8864526Z           "evidence": []
2026-06-21T11:53:55.8864808Z         },
2026-06-21T11:53:55.8865047Z         "impl": {
2026-06-21T11:53:55.8865309Z           "complete": true,
2026-06-21T11:53:55.8865596Z           "evidence": [
2026-06-21T11:53:55.8865863Z             {
2026-06-21T11:53:55.8866149Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.8866528Z               "line": 15
2026-06-21T11:53:55.8866793Z             }
2026-06-21T11:53:55.8867031Z           ]
2026-06-21T11:53:55.8867266Z         },
2026-06-21T11:53:55.8867495Z         "int": {
2026-06-21T11:53:55.8867761Z           "complete": true,
2026-06-21T11:53:55.8868047Z           "evidence": [
2026-06-21T11:53:55.8868328Z             {
2026-06-21T11:53:55.8869278Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:55.8869655Z               "line": 13
2026-06-21T11:53:55.8869917Z             }
2026-06-21T11:53:55.8870147Z           ]
2026-06-21T11:53:55.8870381Z         },
2026-06-21T11:53:55.8870618Z         "unit": {
2026-06-21T11:53:55.8870880Z           "complete": true,
2026-06-21T11:53:55.8871158Z           "evidence": [
2026-06-21T11:53:55.8871420Z             {
2026-06-21T11:53:55.8871693Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.8872049Z               "line": 717
2026-06-21T11:53:55.8872325Z             },
2026-06-21T11:53:55.8872573Z             {
2026-06-21T11:53:55.8872859Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.8873212Z               "line": 804
2026-06-21T11:53:55.8873478Z             }
2026-06-21T11:53:55.8873717Z           ]
2026-06-21T11:53:55.8873951Z         }
2026-06-21T11:53:55.8874183Z       }
2026-06-21T11:53:55.8874423Z     },
2026-06-21T11:53:55.8874648Z     {
2026-06-21T11:53:55.8874887Z       "id": "REQ-API-2",
2026-06-21T11:53:55.8875344Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T11:53:55.8875864Z       "requiredStages": [
2026-06-21T11:53:55.8876146Z         "impl",
2026-06-21T11:53:55.8876399Z         "unit",
2026-06-21T11:53:55.8876651Z         "int"
2026-06-21T11:53:55.8876898Z       ],
2026-06-21T11:53:55.8877140Z       "stages": {
2026-06-21T11:53:55.8877401Z         "doc": {
2026-06-21T11:53:55.8877653Z           "complete": false,
2026-06-21T11:53:55.8877953Z           "evidence": []
2026-06-21T11:53:55.8878221Z         },
2026-06-21T11:53:55.8878464Z         "impl": {
2026-06-21T11:53:55.8878717Z           "complete": true,
2026-06-21T11:53:55.8879089Z           "evidence": [
2026-06-21T11:53:55.8879361Z             {
2026-06-21T11:53:55.8879660Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T11:53:55.8880340Z               "line": 17
2026-06-21T11:53:55.8880602Z             },
2026-06-21T11:53:55.8880845Z             {
2026-06-21T11:53:55.8881360Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:55.8881713Z               "line": 20
2026-06-21T11:53:55.8881980Z             },
2026-06-21T11:53:55.8882215Z             {
2026-06-21T11:53:55.8882513Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:55.8882895Z               "line": 142
2026-06-21T11:53:55.8883094Z             },
2026-06-21T11:53:55.8883262Z             {
2026-06-21T11:53:55.8883457Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8883700Z               "line": 24
2026-06-21T11:53:55.8883881Z             },
2026-06-21T11:53:55.8884039Z             {
2026-06-21T11:53:55.8884238Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8884488Z               "line": 41
2026-06-21T11:53:55.8884667Z             },
2026-06-21T11:53:55.8884833Z             {
2026-06-21T11:53:55.8885046Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8885289Z               "line": 213
2026-06-21T11:53:55.8885485Z             },
2026-06-21T11:53:55.8885646Z             {
2026-06-21T11:53:55.8885843Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8886100Z               "line": 255
2026-06-21T11:53:55.8886290Z             },
2026-06-21T11:53:55.8886453Z             {
2026-06-21T11:53:55.8886654Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8886901Z               "line": 334
2026-06-21T11:53:55.8887077Z             },
2026-06-21T11:53:55.8887245Z             {
2026-06-21T11:53:55.8887439Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8887672Z               "line": 397
2026-06-21T11:53:55.8887860Z             },
2026-06-21T11:53:55.8888029Z             {
2026-06-21T11:53:55.8888209Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8888452Z               "line": 436
2026-06-21T11:53:55.8888639Z             },
2026-06-21T11:53:55.8888800Z             {
2026-06-21T11:53:55.8889077Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.8889430Z               "line": 17
2026-06-21T11:53:55.8889701Z             },
2026-06-21T11:53:55.8889931Z             {
2026-06-21T11:53:55.8890211Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.8890552Z               "line": 30
2026-06-21T11:53:55.8890824Z             },
2026-06-21T11:53:55.8891056Z             {
2026-06-21T11:53:55.8891333Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.8891686Z               "line": 63
2026-06-21T11:53:55.8891939Z             },
2026-06-21T11:53:55.8892169Z             {
2026-06-21T11:53:55.8892441Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.8892794Z               "line": 77
2026-06-21T11:53:55.8893054Z             }
2026-06-21T11:53:55.8893292Z           ]
2026-06-21T11:53:55.8893550Z         },
2026-06-21T11:53:55.8893793Z         "int": {
2026-06-21T11:53:55.8894070Z           "complete": true,
2026-06-21T11:53:55.8894390Z           "evidence": [
2026-06-21T11:53:55.8894652Z             {
2026-06-21T11:53:55.8894952Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:55.8895332Z               "line": 14
2026-06-21T11:53:55.8895602Z             },
2026-06-21T11:53:55.8895854Z             {
2026-06-21T11:53:55.8896145Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:55.8896417Z               "line": 187
2026-06-21T11:53:55.8896604Z             }
2026-06-21T11:53:55.8896769Z           ]
2026-06-21T11:53:55.8896933Z         },
2026-06-21T11:53:55.8897094Z         "unit": {
2026-06-21T11:53:55.8897281Z           "complete": true,
2026-06-21T11:53:55.8897471Z           "evidence": [
2026-06-21T11:53:55.8897651Z             {
2026-06-21T11:53:55.8897858Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T11:53:55.8898279Z               "line": 82
2026-06-21T11:53:55.8898464Z             },
2026-06-21T11:53:55.8898626Z             {
2026-06-21T11:53:55.8899031Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:55.8899379Z               "line": 279
2026-06-21T11:53:55.8899661Z             },
2026-06-21T11:53:55.8899871Z             {
2026-06-21T11:53:55.8900071Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8900314Z               "line": 709
2026-06-21T11:53:55.8900491Z             },
2026-06-21T11:53:55.8900660Z             {
2026-06-21T11:53:55.8900841Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8901079Z               "line": 720
2026-06-21T11:53:55.8901259Z             },
2026-06-21T11:53:55.8901422Z             {
2026-06-21T11:53:55.8901616Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8901851Z               "line": 873
2026-06-21T11:53:55.8902038Z             },
2026-06-21T11:53:55.8902199Z             {
2026-06-21T11:53:55.8902400Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8902638Z               "line": 919
2026-06-21T11:53:55.8902818Z             },
2026-06-21T11:53:55.8902982Z             {
2026-06-21T11:53:55.8903172Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.8903415Z               "line": 143
2026-06-21T11:53:55.8903599Z             },
2026-06-21T11:53:55.8903772Z             {
2026-06-21T11:53:55.8903953Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.8904190Z               "line": 187
2026-06-21T11:53:55.8904367Z             }
2026-06-21T11:53:55.8904530Z           ]
2026-06-21T11:53:55.8904687Z         }
2026-06-21T11:53:55.8904849Z       }
2026-06-21T11:53:55.8905007Z     },
2026-06-21T11:53:55.8905169Z     {
2026-06-21T11:53:55.8905345Z       "id": "REQ-API-3",
2026-06-21T11:53:55.8905575Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T11:53:55.8905859Z       "requiredStages": [
2026-06-21T11:53:55.8906066Z         "impl",
2026-06-21T11:53:55.8906500Z         "unit",
2026-06-21T11:53:55.8906771Z         "int"
2026-06-21T11:53:55.8907149Z       ],
2026-06-21T11:53:55.8907401Z       "stages": {
2026-06-21T11:53:55.8907658Z         "doc": {
2026-06-21T11:53:55.8908021Z           "complete": false,
2026-06-21T11:53:55.8908312Z           "evidence": []
2026-06-21T11:53:55.8908616Z         },
2026-06-21T11:53:55.8909048Z         "impl": {
2026-06-21T11:53:55.8909539Z           "complete": true,
2026-06-21T11:53:55.8910041Z           "evidence": [
2026-06-21T11:53:55.8910398Z             {
2026-06-21T11:53:55.8910879Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:55.8911434Z               "line": 27
2026-06-21T11:53:55.8938891Z             },
2026-06-21T11:53:55.8939349Z             {
2026-06-21T11:53:55.8939673Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8940065Z               "line": 566
2026-06-21T11:53:55.8940349Z             }
2026-06-21T11:53:55.8940618Z           ]
2026-06-21T11:53:55.8940853Z         },
2026-06-21T11:53:55.8941087Z         "int": {
2026-06-21T11:53:55.8941368Z           "complete": true,
2026-06-21T11:53:55.8941663Z           "evidence": [
2026-06-21T11:53:55.8941929Z             {
2026-06-21T11:53:55.8942234Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:55.8942612Z               "line": 261
2026-06-21T11:53:55.8942887Z             }
2026-06-21T11:53:55.8943133Z           ]
2026-06-21T11:53:55.8943376Z         },
2026-06-21T11:53:55.8943619Z         "unit": {
2026-06-21T11:53:55.8943881Z           "complete": true,
2026-06-21T11:53:55.8944181Z           "evidence": [
2026-06-21T11:53:55.8944453Z             {
2026-06-21T11:53:55.8944749Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:55.8945121Z               "line": 280
2026-06-21T11:53:55.8945402Z             },
2026-06-21T11:53:55.8945650Z             {
2026-06-21T11:53:55.8945956Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.8946637Z               "line": 948
2026-06-21T11:53:55.8946932Z             }
2026-06-21T11:53:55.8947352Z           ]
2026-06-21T11:53:55.8947604Z         }
2026-06-21T11:53:55.8947839Z       }
2026-06-21T11:53:55.8948075Z     },
2026-06-21T11:53:55.8948311Z     {
2026-06-21T11:53:55.8948569Z       "id": "REQ-API-4",
2026-06-21T11:53:55.8951361Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T11:53:55.8953661Z       "requiredStages": [
2026-06-21T11:53:55.8953956Z         "doc",
2026-06-21T11:53:55.8954247Z         "impl",
2026-06-21T11:53:55.8954504Z         "unit"
2026-06-21T11:53:55.8954770Z       ],
2026-06-21T11:53:55.8955023Z       "stages": {
2026-06-21T11:53:55.8955296Z         "doc": {
2026-06-21T11:53:55.8955571Z           "complete": true,
2026-06-21T11:53:55.8955886Z           "evidence": [
2026-06-21T11:53:55.8956187Z             {
2026-06-21T11:53:55.8956463Z               "path": "CONTEXT.md",
2026-06-21T11:53:55.8956801Z               "line": 149
2026-06-21T11:53:55.8957098Z             }
2026-06-21T11:53:55.8957354Z           ]
2026-06-21T11:53:55.8957597Z         },
2026-06-21T11:53:55.8957850Z         "impl": {
2026-06-21T11:53:55.8958150Z           "complete": true,
2026-06-21T11:53:55.8958464Z           "evidence": [
2026-06-21T11:53:55.8958754Z             {
2026-06-21T11:53:55.8959119Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.8959496Z               "line": 484
2026-06-21T11:53:55.8959791Z             }
2026-06-21T11:53:55.8960035Z           ]
2026-06-21T11:53:55.8960289Z         },
2026-06-21T11:53:55.8960531Z         "int": {
2026-06-21T11:53:55.8960788Z           "complete": false,
2026-06-21T11:53:55.8961108Z           "evidence": []
2026-06-21T11:53:55.8961384Z         },
2026-06-21T11:53:55.8961626Z         "unit": {
2026-06-21T11:53:55.8961891Z           "complete": true,
2026-06-21T11:53:55.8962188Z           "evidence": [
2026-06-21T11:53:55.8962454Z             {
2026-06-21T11:53:55.8962769Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.8963127Z               "line": 657
2026-06-21T11:53:55.8963408Z             },
2026-06-21T11:53:55.8963656Z             {
2026-06-21T11:53:55.8963936Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.8964305Z               "line": 681
2026-06-21T11:53:55.8964582Z             },
2026-06-21T11:53:55.8964840Z             {
2026-06-21T11:53:55.8965131Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.8965483Z               "line": 705
2026-06-21T11:53:55.8965761Z             }
2026-06-21T11:53:55.8965999Z           ]
2026-06-21T11:53:55.8966246Z         }
2026-06-21T11:53:55.8966488Z       }
2026-06-21T11:53:55.8966738Z     },
2026-06-21T11:53:55.8966979Z     {
2026-06-21T11:53:55.8967236Z       "id": "REQ-ARCH-1",
2026-06-21T11:53:55.8967600Z       "title": "Many small acyclically-layered crates",
2026-06-21T11:53:55.8968010Z       "requiredStages": [
2026-06-21T11:53:55.8968306Z         "impl"
2026-06-21T11:53:55.8968573Z       ],
2026-06-21T11:53:55.8968825Z       "stages": {
2026-06-21T11:53:55.8969181Z         "doc": {
2026-06-21T11:53:55.8969469Z           "complete": false,
2026-06-21T11:53:55.8969803Z           "evidence": []
2026-06-21T11:53:55.8970113Z         },
2026-06-21T11:53:55.8970356Z         "impl": {
2026-06-21T11:53:55.8970629Z           "complete": true,
2026-06-21T11:53:55.8970830Z           "evidence": [
2026-06-21T11:53:55.8971019Z             {
2026-06-21T11:53:55.8971211Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T11:53:55.8971745Z               "line": 18
2026-06-21T11:53:55.8971925Z             },
2026-06-21T11:53:55.8972190Z             {
2026-06-21T11:53:55.8972394Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T11:53:55.8972623Z               "line": 12
2026-06-21T11:53:55.8972805Z             },
2026-06-21T11:53:55.8972961Z             {
2026-06-21T11:53:55.8973148Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T11:53:55.8973387Z               "line": 12
2026-06-21T11:53:55.8973562Z             }
2026-06-21T11:53:55.8973730Z           ]
2026-06-21T11:53:55.8973896Z         },
2026-06-21T11:53:55.8974050Z         "int": {
2026-06-21T11:53:55.8974240Z           "complete": false,
2026-06-21T11:53:55.8974459Z           "evidence": []
2026-06-21T11:53:55.8974639Z         },
2026-06-21T11:53:55.8974804Z         "unit": {
2026-06-21T11:53:55.8974980Z           "complete": false,
2026-06-21T11:53:55.8975180Z           "evidence": []
2026-06-21T11:53:55.8975353Z         }
2026-06-21T11:53:55.8975523Z       }
2026-06-21T11:53:55.8975681Z     },
2026-06-21T11:53:55.8975833Z     {
2026-06-21T11:53:55.8976010Z       "id": "REQ-ARCH-2",
2026-06-21T11:53:55.8976287Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T11:53:55.8976769Z       "requiredStages": [
2026-06-21T11:53:55.8977073Z         "impl"
2026-06-21T11:53:55.8977312Z       ],
2026-06-21T11:53:55.8977477Z       "stages": {
2026-06-21T11:53:55.8977651Z         "doc": {
2026-06-21T11:53:55.8977825Z           "complete": false,
2026-06-21T11:53:55.8978026Z           "evidence": []
2026-06-21T11:53:55.8978222Z         },
2026-06-21T11:53:55.8978373Z         "impl": {
2026-06-21T11:53:55.8978547Z           "complete": true,
2026-06-21T11:53:55.8978751Z           "evidence": [
2026-06-21T11:53:55.8978927Z             {
2026-06-21T11:53:55.8979242Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T11:53:55.8979486Z               "line": 18
2026-06-21T11:53:55.8979675Z             }
2026-06-21T11:53:55.8979846Z           ]
2026-06-21T11:53:55.8980006Z         },
2026-06-21T11:53:55.8980169Z         "int": {
2026-06-21T11:53:55.8980358Z           "complete": false,
2026-06-21T11:53:55.8980555Z           "evidence": []
2026-06-21T11:53:55.8980741Z         },
2026-06-21T11:53:55.8980907Z         "unit": {
2026-06-21T11:53:55.8981080Z           "complete": false,
2026-06-21T11:53:55.8981284Z           "evidence": []
2026-06-21T11:53:55.8981461Z         }
2026-06-21T11:53:55.8981613Z       }
2026-06-21T11:53:55.8981766Z     },
2026-06-21T11:53:55.8981918Z     {
2026-06-21T11:53:55.8982090Z       "id": "REQ-ARCH-3",
2026-06-21T11:53:55.8982392Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T11:53:55.8982727Z       "requiredStages": [
2026-06-21T11:53:55.8982915Z         "impl",
2026-06-21T11:53:55.8983093Z         "unit"
2026-06-21T11:53:55.8983254Z       ],
2026-06-21T11:53:55.8983413Z       "stages": {
2026-06-21T11:53:55.8983589Z         "doc": {
2026-06-21T11:53:55.8983770Z           "complete": false,
2026-06-21T11:53:55.8983971Z           "evidence": []
2026-06-21T11:53:55.8984137Z         },
2026-06-21T11:53:55.8984291Z         "impl": {
2026-06-21T11:53:55.8984471Z           "complete": true,
2026-06-21T11:53:55.8984657Z           "evidence": [
2026-06-21T11:53:55.8984828Z             {
2026-06-21T11:53:55.8985033Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T11:53:55.8985280Z               "line": 34
2026-06-21T11:53:55.8985463Z             },
2026-06-21T11:53:55.8985631Z             {
2026-06-21T11:53:55.8985826Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T11:53:55.8986078Z               "line": 41
2026-06-21T11:53:55.8986261Z             }
2026-06-21T11:53:55.8986422Z           ]
2026-06-21T11:53:55.8986585Z         },
2026-06-21T11:53:55.8986746Z         "int": {
2026-06-21T11:53:55.8986923Z           "complete": false,
2026-06-21T11:53:55.8987124Z           "evidence": []
2026-06-21T11:53:55.8987439Z         },
2026-06-21T11:53:55.8987590Z         "unit": {
2026-06-21T11:53:55.8987778Z           "complete": true,
2026-06-21T11:53:55.8988080Z           "evidence": [
2026-06-21T11:53:55.8988276Z             {
2026-06-21T11:53:55.8988473Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T11:53:55.8988715Z               "line": 51
2026-06-21T11:53:55.8988892Z             },
2026-06-21T11:53:55.8989172Z             {
2026-06-21T11:53:55.8989374Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T11:53:55.8989620Z               "line": 71
2026-06-21T11:53:55.8989802Z             },
2026-06-21T11:53:55.8989969Z             {
2026-06-21T11:53:55.8990164Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T11:53:55.8990402Z               "line": 83
2026-06-21T11:53:55.8990594Z             }
2026-06-21T11:53:55.8990758Z           ]
2026-06-21T11:53:55.8990914Z         }
2026-06-21T11:53:55.8991077Z       }
2026-06-21T11:53:55.8991243Z     },
2026-06-21T11:53:55.8991415Z     {
2026-06-21T11:53:55.8991587Z       "id": "REQ-ARCH-4",
2026-06-21T11:53:55.8991853Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T11:53:55.8992178Z       "requiredStages": [
2026-06-21T11:53:55.8992378Z         "impl",
2026-06-21T11:53:55.8992551Z         "unit"
2026-06-21T11:53:55.8992740Z       ],
2026-06-21T11:53:55.8992899Z       "stages": {
2026-06-21T11:53:55.8993083Z         "doc": {
2026-06-21T11:53:55.8993259Z           "complete": false,
2026-06-21T11:53:55.8993457Z           "evidence": []
2026-06-21T11:53:55.8993649Z         },
2026-06-21T11:53:55.8993814Z         "impl": {
2026-06-21T11:53:55.8993992Z           "complete": true,
2026-06-21T11:53:55.8994188Z           "evidence": [
2026-06-21T11:53:55.8994377Z             {
2026-06-21T11:53:55.8994578Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.8994827Z               "line": 165
2026-06-21T11:53:55.8995011Z             },
2026-06-21T11:53:55.8995180Z             {
2026-06-21T11:53:55.8995384Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.8995631Z               "line": 188
2026-06-21T11:53:55.8995812Z             },
2026-06-21T11:53:55.8995976Z             {
2026-06-21T11:53:55.8996177Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.8996425Z               "line": 208
2026-06-21T11:53:55.8996610Z             },
2026-06-21T11:53:55.8996783Z             {
2026-06-21T11:53:55.8996972Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.8997211Z               "line": 223
2026-06-21T11:53:55.8997389Z             },
2026-06-21T11:53:55.8997560Z             {
2026-06-21T11:53:55.8997756Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.8997999Z               "line": 273
2026-06-21T11:53:55.8998179Z             }
2026-06-21T11:53:55.8998348Z           ]
2026-06-21T11:53:55.8998508Z         },
2026-06-21T11:53:55.8998665Z         "int": {
2026-06-21T11:53:55.8998855Z           "complete": false,
2026-06-21T11:53:55.8999165Z           "evidence": []
2026-06-21T11:53:55.8999357Z         },
2026-06-21T11:53:55.8999532Z         "unit": {
2026-06-21T11:53:55.8999724Z           "complete": true,
2026-06-21T11:53:55.8999914Z           "evidence": [
2026-06-21T11:53:55.9000105Z             {
2026-06-21T11:53:55.9000291Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9000529Z               "line": 334
2026-06-21T11:53:55.9000710Z             },
2026-06-21T11:53:55.9000871Z             {
2026-06-21T11:53:55.9001060Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9001303Z               "line": 344
2026-06-21T11:53:55.9001493Z             },
2026-06-21T11:53:55.9001651Z             {
2026-06-21T11:53:55.9001852Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9002084Z               "line": 355
2026-06-21T11:53:55.9002276Z             },
2026-06-21T11:53:55.9002491Z             {
2026-06-21T11:53:55.9002796Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9003043Z               "line": 366
2026-06-21T11:53:55.9003320Z             },
2026-06-21T11:53:55.9003483Z             {
2026-06-21T11:53:55.9003681Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9003918Z               "line": 378
2026-06-21T11:53:55.9004103Z             },
2026-06-21T11:53:55.9004270Z             {
2026-06-21T11:53:55.9004466Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9004694Z               "line": 391
2026-06-21T11:53:55.9004881Z             },
2026-06-21T11:53:55.9005038Z             {
2026-06-21T11:53:55.9005228Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9005467Z               "line": 402
2026-06-21T11:53:55.9005658Z             },
2026-06-21T11:53:55.9005824Z             {
2026-06-21T11:53:55.9023853Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9024207Z               "line": 419
2026-06-21T11:53:55.9024420Z             },
2026-06-21T11:53:55.9024598Z             {
2026-06-21T11:53:55.9024806Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9025075Z               "line": 547
2026-06-21T11:53:55.9025262Z             }
2026-06-21T11:53:55.9025433Z           ]
2026-06-21T11:53:55.9025587Z         }
2026-06-21T11:53:55.9025742Z       }
2026-06-21T11:53:55.9025906Z     },
2026-06-21T11:53:55.9026067Z     {
2026-06-21T11:53:55.9026230Z       "id": "REQ-CLI-1",
2026-06-21T11:53:55.9027430Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T11:53:55.9028648Z       "requiredStages": [
2026-06-21T11:53:55.9028853Z         "impl",
2026-06-21T11:53:55.9029126Z         "unit"
2026-06-21T11:53:55.9029297Z       ],
2026-06-21T11:53:55.9029497Z       "stages": {
2026-06-21T11:53:55.9029670Z         "doc": {
2026-06-21T11:53:55.9029845Z           "complete": false,
2026-06-21T11:53:55.9030047Z           "evidence": []
2026-06-21T11:53:55.9030244Z         },
2026-06-21T11:53:55.9030408Z         "impl": {
2026-06-21T11:53:55.9030578Z           "complete": true,
2026-06-21T11:53:55.9030770Z           "evidence": [
2026-06-21T11:53:55.9030951Z             {
2026-06-21T11:53:55.9031141Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9031375Z               "line": 225
2026-06-21T11:53:55.9031565Z             },
2026-06-21T11:53:55.9031732Z             {
2026-06-21T11:53:55.9031919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9032157Z               "line": 1093
2026-06-21T11:53:55.9032353Z             },
2026-06-21T11:53:55.9032575Z             {
2026-06-21T11:53:55.9032764Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9032993Z               "line": 1720
2026-06-21T11:53:55.9033197Z             },
2026-06-21T11:53:55.9033360Z             {
2026-06-21T11:53:55.9033542Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9033769Z               "line": 3124
2026-06-21T11:53:55.9033956Z             }
2026-06-21T11:53:55.9034118Z           ]
2026-06-21T11:53:55.9034275Z         },
2026-06-21T11:53:55.9034437Z         "int": {
2026-06-21T11:53:55.9034619Z           "complete": false,
2026-06-21T11:53:55.9034820Z           "evidence": []
2026-06-21T11:53:55.9035010Z         },
2026-06-21T11:53:55.9035173Z         "unit": {
2026-06-21T11:53:55.9035352Z           "complete": true,
2026-06-21T11:53:55.9035547Z           "evidence": [
2026-06-21T11:53:55.9035726Z             {
2026-06-21T11:53:55.9035904Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9036132Z               "line": 7947
2026-06-21T11:53:55.9036307Z             }
2026-06-21T11:53:55.9036632Z           ]
2026-06-21T11:53:55.9036800Z         }
2026-06-21T11:53:55.9036961Z       }
2026-06-21T11:53:55.9037238Z     },
2026-06-21T11:53:55.9037396Z     {
2026-06-21T11:53:55.9037552Z       "id": "REQ-CLI-2",
2026-06-21T11:53:55.9038360Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T11:53:55.9039619Z       "requiredStages": [
2026-06-21T11:53:55.9039862Z         "impl",
2026-06-21T11:53:55.9040052Z         "unit"
2026-06-21T11:53:55.9040215Z       ],
2026-06-21T11:53:55.9040386Z       "stages": {
2026-06-21T11:53:55.9040555Z         "doc": {
2026-06-21T11:53:55.9040733Z           "complete": false,
2026-06-21T11:53:55.9040929Z           "evidence": []
2026-06-21T11:53:55.9041110Z         },
2026-06-21T11:53:55.9041277Z         "impl": {
2026-06-21T11:53:55.9041476Z           "complete": true,
2026-06-21T11:53:55.9041669Z           "evidence": [
2026-06-21T11:53:55.9041854Z             {
2026-06-21T11:53:55.9042058Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9042321Z               "line": 414
2026-06-21T11:53:55.9042513Z             },
2026-06-21T11:53:55.9042683Z             {
2026-06-21T11:53:55.9042894Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T11:53:55.9043150Z               "line": 97
2026-06-21T11:53:55.9043334Z             },
2026-06-21T11:53:55.9043500Z             {
2026-06-21T11:53:55.9043700Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:55.9043953Z               "line": 256
2026-06-21T11:53:55.9044140Z             },
2026-06-21T11:53:55.9044301Z             {
2026-06-21T11:53:55.9044483Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9044731Z               "line": 434
2026-06-21T11:53:55.9044931Z             },
2026-06-21T11:53:55.9045094Z             {
2026-06-21T11:53:55.9045279Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9045527Z               "line": 1174
2026-06-21T11:53:55.9045714Z             },
2026-06-21T11:53:55.9045884Z             {
2026-06-21T11:53:55.9046064Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9046281Z               "line": 1958
2026-06-21T11:53:55.9046473Z             },
2026-06-21T11:53:55.9046634Z             {
2026-06-21T11:53:55.9046825Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9047050Z               "line": 2047
2026-06-21T11:53:55.9047235Z             },
2026-06-21T11:53:55.9047398Z             {
2026-06-21T11:53:55.9047574Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9047803Z               "line": 2108
2026-06-21T11:53:55.9047980Z             }
2026-06-21T11:53:55.9048141Z           ]
2026-06-21T11:53:55.9048305Z         },
2026-06-21T11:53:55.9048455Z         "int": {
2026-06-21T11:53:55.9048641Z           "complete": false,
2026-06-21T11:53:55.9048843Z           "evidence": []
2026-06-21T11:53:55.9049115Z         },
2026-06-21T11:53:55.9049279Z         "unit": {
2026-06-21T11:53:55.9049463Z           "complete": true,
2026-06-21T11:53:55.9049659Z           "evidence": [
2026-06-21T11:53:55.9049831Z             {
2026-06-21T11:53:55.9050036Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:55.9050288Z               "line": 338
2026-06-21T11:53:55.9050470Z             },
2026-06-21T11:53:55.9050640Z             {
2026-06-21T11:53:55.9050819Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9051046Z               "line": 8102
2026-06-21T11:53:55.9051247Z             }
2026-06-21T11:53:55.9051417Z           ]
2026-06-21T11:53:55.9051576Z         }
2026-06-21T11:53:55.9051732Z       }
2026-06-21T11:53:55.9051885Z     },
2026-06-21T11:53:55.9052056Z     {
2026-06-21T11:53:55.9052224Z       "id": "REQ-CLI-3",
2026-06-21T11:53:55.9053054Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T11:53:55.9054194Z       "requiredStages": [
2026-06-21T11:53:55.9054390Z         "impl",
2026-06-21T11:53:55.9054570Z         "unit"
2026-06-21T11:53:55.9054738Z       ],
2026-06-21T11:53:55.9054895Z       "stages": {
2026-06-21T11:53:55.9055067Z         "doc": {
2026-06-21T11:53:55.9055248Z           "complete": false,
2026-06-21T11:53:55.9055439Z           "evidence": []
2026-06-21T11:53:55.9055611Z         },
2026-06-21T11:53:55.9055782Z         "impl": {
2026-06-21T11:53:55.9055955Z           "complete": true,
2026-06-21T11:53:55.9056144Z           "evidence": [
2026-06-21T11:53:55.9056331Z             {
2026-06-21T11:53:55.9056510Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9056751Z               "line": 1087
2026-06-21T11:53:55.9056947Z             }
2026-06-21T11:53:55.9057109Z           ]
2026-06-21T11:53:55.9057272Z         },
2026-06-21T11:53:55.9057447Z         "int": {
2026-06-21T11:53:55.9057624Z           "complete": false,
2026-06-21T11:53:55.9057824Z           "evidence": []
2026-06-21T11:53:55.9058010Z         },
2026-06-21T11:53:55.9058168Z         "unit": {
2026-06-21T11:53:55.9058343Z           "complete": true,
2026-06-21T11:53:55.9058531Z           "evidence": [
2026-06-21T11:53:55.9058707Z             {
2026-06-21T11:53:55.9058898Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9059196Z               "line": 7912
2026-06-21T11:53:55.9059394Z             }
2026-06-21T11:53:55.9059557Z           ]
2026-06-21T11:53:55.9059723Z         }
2026-06-21T11:53:55.9059890Z       }
2026-06-21T11:53:55.9060052Z     },
2026-06-21T11:53:55.9060200Z     {
2026-06-21T11:53:55.9060372Z       "id": "REQ-CLI-4",
2026-06-21T11:53:55.9062755Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T11:53:55.9064674Z       "requiredStages": [],
2026-06-21T11:53:55.9064873Z       "stages": {
2026-06-21T11:53:55.9065040Z         "doc": {
2026-06-21T11:53:55.9065237Z           "complete": false,
2026-06-21T11:53:55.9065440Z           "evidence": []
2026-06-21T11:53:55.9065617Z         },
2026-06-21T11:53:55.9065779Z         "impl": {
2026-06-21T11:53:55.9065970Z           "complete": true,
2026-06-21T11:53:55.9066166Z           "evidence": [
2026-06-21T11:53:55.9066356Z             {
2026-06-21T11:53:55.9066543Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9066777Z               "line": 5678
2026-06-21T11:53:55.9066971Z             }
2026-06-21T11:53:55.9067132Z           ]
2026-06-21T11:53:55.9067292Z         },
2026-06-21T11:53:55.9067445Z         "int": {
2026-06-21T11:53:55.9067626Z           "complete": false,
2026-06-21T11:53:55.9067827Z           "evidence": []
2026-06-21T11:53:55.9068208Z         },
2026-06-21T11:53:55.9068494Z         "unit": {
2026-06-21T11:53:55.9068753Z           "complete": false,
2026-06-21T11:53:55.9069148Z           "evidence": []
2026-06-21T11:53:55.9069453Z         }
2026-06-21T11:53:55.9069770Z       }
2026-06-21T11:53:55.9070040Z     },
2026-06-21T11:53:55.9070283Z     {
2026-06-21T11:53:55.9070583Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T11:53:55.9073820Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T11:53:55.9077150Z       "requiredStages": [
2026-06-21T11:53:55.9077433Z         "impl",
2026-06-21T11:53:55.9077745Z         "unit"
2026-06-21T11:53:55.9077995Z       ],
2026-06-21T11:53:55.9078234Z       "stages": {
2026-06-21T11:53:55.9078539Z         "doc": {
2026-06-21T11:53:55.9078811Z           "complete": false,
2026-06-21T11:53:55.9079254Z           "evidence": []
2026-06-21T11:53:55.9079579Z         },
2026-06-21T11:53:55.9079812Z         "impl": {
2026-06-21T11:53:55.9080140Z           "complete": true,
2026-06-21T11:53:55.9080424Z           "evidence": [
2026-06-21T11:53:55.9080715Z             {
2026-06-21T11:53:55.9081006Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9081344Z               "line": 8
2026-06-21T11:53:55.9081631Z             },
2026-06-21T11:53:55.9081931Z             {
2026-06-21T11:53:55.9082237Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9082594Z               "line": 51
2026-06-21T11:53:55.9082857Z             },
2026-06-21T11:53:55.9083155Z             {
2026-06-21T11:53:55.9083446Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9083756Z               "line": 82
2026-06-21T11:53:55.9084114Z             },
2026-06-21T11:53:55.9084361Z             {
2026-06-21T11:53:55.9084671Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9085015Z               "line": 229
2026-06-21T11:53:55.9085266Z             }
2026-06-21T11:53:55.9085579Z           ]
2026-06-21T11:53:55.9085832Z         },
2026-06-21T11:53:55.9086094Z         "int": {
2026-06-21T11:53:55.9086418Z           "complete": false,
2026-06-21T11:53:55.9086695Z           "evidence": []
2026-06-21T11:53:55.9087029Z         },
2026-06-21T11:53:55.9087277Z         "unit": {
2026-06-21T11:53:55.9087577Z           "complete": true,
2026-06-21T11:53:55.9087877Z           "evidence": [
2026-06-21T11:53:55.9088143Z             {
2026-06-21T11:53:55.9088469Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9088841Z               "line": 249
2026-06-21T11:53:55.9089214Z             },
2026-06-21T11:53:55.9089485Z             {
2026-06-21T11:53:55.9089781Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9090134Z               "line": 256
2026-06-21T11:53:55.9090401Z             },
2026-06-21T11:53:55.9090634Z             {
2026-06-21T11:53:55.9090956Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9091323Z               "line": 263
2026-06-21T11:53:55.9091632Z             },
2026-06-21T11:53:55.9091876Z             {
2026-06-21T11:53:55.9092157Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9092534Z               "line": 270
2026-06-21T11:53:55.9092806Z             },
2026-06-21T11:53:55.9093079Z             {
2026-06-21T11:53:55.9093417Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9093711Z               "line": 297
2026-06-21T11:53:55.9094040Z             },
2026-06-21T11:53:55.9094297Z             {
2026-06-21T11:53:55.9094717Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9095070Z               "line": 307
2026-06-21T11:53:55.9095441Z             },
2026-06-21T11:53:55.9095746Z             {
2026-06-21T11:53:55.9096054Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9096425Z               "line": 317
2026-06-21T11:53:55.9096707Z             },
2026-06-21T11:53:55.9096950Z             {
2026-06-21T11:53:55.9097270Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9097570Z               "line": 331
2026-06-21T11:53:55.9097842Z             },
2026-06-21T11:53:55.9098127Z             {
2026-06-21T11:53:55.9098438Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9098779Z               "line": 340
2026-06-21T11:53:55.9099111Z             },
2026-06-21T11:53:55.9099363Z             {
2026-06-21T11:53:55.9099683Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9100021Z               "line": 348
2026-06-21T11:53:55.9100322Z             }
2026-06-21T11:53:55.9100603Z           ]
2026-06-21T11:53:55.9100851Z         }
2026-06-21T11:53:55.9101152Z       }
2026-06-21T11:53:55.9101451Z     },
2026-06-21T11:53:55.9101721Z     {
2026-06-21T11:53:55.9102002Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T11:53:55.9110772Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T11:53:55.9114978Z       "requiredStages": [
2026-06-21T11:53:55.9115326Z         "impl",
2026-06-21T11:53:55.9115580Z         "unit"
2026-06-21T11:53:55.9115908Z       ],
2026-06-21T11:53:55.9116171Z       "stages": {
2026-06-21T11:53:55.9116462Z         "doc": {
2026-06-21T11:53:55.9116801Z           "complete": false,
2026-06-21T11:53:55.9117118Z           "evidence": []
2026-06-21T11:53:55.9117465Z         },
2026-06-21T11:53:55.9117722Z         "impl": {
2026-06-21T11:53:55.9118023Z           "complete": true,
2026-06-21T11:53:55.9118313Z           "evidence": [
2026-06-21T11:53:55.9118662Z             {
2026-06-21T11:53:55.9119024Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9119466Z               "line": 141
2026-06-21T11:53:55.9119739Z             },
2026-06-21T11:53:55.9120060Z             {
2026-06-21T11:53:55.9120355Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9120647Z               "line": 1376
2026-06-21T11:53:55.9121033Z             },
2026-06-21T11:53:55.9121281Z             {
2026-06-21T11:53:55.9121643Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9121967Z               "line": 2145
2026-06-21T11:53:55.9122268Z             },
2026-06-21T11:53:55.9122693Z             {
2026-06-21T11:53:55.9123021Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9123466Z               "line": 4368
2026-06-21T11:53:55.9123757Z             },
2026-06-21T11:53:55.9124056Z             {
2026-06-21T11:53:55.9124304Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9124691Z               "line": 4466
2026-06-21T11:53:55.9125006Z             },
2026-06-21T11:53:55.9125267Z             {
2026-06-21T11:53:55.9125538Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9125920Z               "line": 5257
2026-06-21T11:53:55.9126192Z             },
2026-06-21T11:53:55.9126492Z             {
2026-06-21T11:53:55.9126793Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9182455Z               "line": 39
2026-06-21T11:53:55.9182775Z             }
2026-06-21T11:53:55.9182991Z           ]
2026-06-21T11:53:55.9183179Z         },
2026-06-21T11:53:55.9183346Z         "int": {
2026-06-21T11:53:55.9183602Z           "complete": false,
2026-06-21T11:53:55.9183820Z           "evidence": []
2026-06-21T11:53:55.9183998Z         },
2026-06-21T11:53:55.9184173Z         "unit": {
2026-06-21T11:53:55.9184345Z           "complete": true,
2026-06-21T11:53:55.9184536Z           "evidence": [
2026-06-21T11:53:55.9184722Z             {
2026-06-21T11:53:55.9184914Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9185160Z               "line": 10272
2026-06-21T11:53:55.9185355Z             },
2026-06-21T11:53:55.9185524Z             {
2026-06-21T11:53:55.9185727Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9185973Z               "line": 281
2026-06-21T11:53:55.9186163Z             },
2026-06-21T11:53:55.9186330Z             {
2026-06-21T11:53:55.9186527Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9186759Z               "line": 358
2026-06-21T11:53:55.9186946Z             },
2026-06-21T11:53:55.9187112Z             {
2026-06-21T11:53:55.9187308Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9187546Z               "line": 381
2026-06-21T11:53:55.9187717Z             },
2026-06-21T11:53:55.9187875Z             {
2026-06-21T11:53:55.9188067Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T11:53:55.9188295Z               "line": 395
2026-06-21T11:53:55.9188472Z             }
2026-06-21T11:53:55.9188632Z           ]
2026-06-21T11:53:55.9188790Z         }
2026-06-21T11:53:55.9189028Z       }
2026-06-21T11:53:55.9189186Z     },
2026-06-21T11:53:55.9189343Z     {
2026-06-21T11:53:55.9189515Z       "id": "REQ-CONSENT-1",
2026-06-21T11:53:55.9190515Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T11:53:55.9191570Z       "requiredStages": [
2026-06-21T11:53:55.9191771Z         "impl",
2026-06-21T11:53:55.9191943Z         "unit"
2026-06-21T11:53:55.9192110Z       ],
2026-06-21T11:53:55.9192272Z       "stages": {
2026-06-21T11:53:55.9192453Z         "doc": {
2026-06-21T11:53:55.9192645Z           "complete": false,
2026-06-21T11:53:55.9192849Z           "evidence": []
2026-06-21T11:53:55.9193029Z         },
2026-06-21T11:53:55.9193193Z         "impl": {
2026-06-21T11:53:55.9193372Z           "complete": true,
2026-06-21T11:53:55.9193580Z           "evidence": [
2026-06-21T11:53:55.9193759Z             {
2026-06-21T11:53:55.9193963Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9194219Z               "line": 27
2026-06-21T11:53:55.9194399Z             },
2026-06-21T11:53:55.9194558Z             {
2026-06-21T11:53:55.9194748Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9194996Z               "line": 75
2026-06-21T11:53:55.9195168Z             },
2026-06-21T11:53:55.9195644Z             {
2026-06-21T11:53:55.9195846Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9196202Z               "line": 98
2026-06-21T11:53:55.9196392Z             },
2026-06-21T11:53:55.9196557Z             {
2026-06-21T11:53:55.9196752Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T11:53:55.9196994Z               "line": 82
2026-06-21T11:53:55.9197186Z             },
2026-06-21T11:53:55.9197353Z             {
2026-06-21T11:53:55.9197544Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T11:53:55.9197787Z               "line": 109
2026-06-21T11:53:55.9197972Z             },
2026-06-21T11:53:55.9198144Z             {
2026-06-21T11:53:55.9198336Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T11:53:55.9198578Z               "line": 127
2026-06-21T11:53:55.9198769Z             },
2026-06-21T11:53:55.9198937Z             {
2026-06-21T11:53:55.9199197Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T11:53:55.9199441Z               "line": 142
2026-06-21T11:53:55.9199636Z             },
2026-06-21T11:53:55.9199807Z             {
2026-06-21T11:53:55.9199989Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9200223Z               "line": 7048
2026-06-21T11:53:55.9200408Z             }
2026-06-21T11:53:55.9200571Z           ]
2026-06-21T11:53:55.9200732Z         },
2026-06-21T11:53:55.9200901Z         "int": {
2026-06-21T11:53:55.9201080Z           "complete": false,
2026-06-21T11:53:55.9201300Z           "evidence": []
2026-06-21T11:53:55.9201494Z         },
2026-06-21T11:53:55.9201660Z         "unit": {
2026-06-21T11:53:55.9201845Z           "complete": true,
2026-06-21T11:53:55.9202050Z           "evidence": [
2026-06-21T11:53:55.9202232Z             {
2026-06-21T11:53:55.9202426Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9202674Z               "line": 334
2026-06-21T11:53:55.9202866Z             },
2026-06-21T11:53:55.9203036Z             {
2026-06-21T11:53:55.9203237Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9203481Z               "line": 380
2026-06-21T11:53:55.9203671Z             },
2026-06-21T11:53:55.9203825Z             {
2026-06-21T11:53:55.9204009Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9204248Z               "line": 391
2026-06-21T11:53:55.9204437Z             },
2026-06-21T11:53:55.9204607Z             {
2026-06-21T11:53:55.9204803Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T11:53:55.9205046Z               "line": 165
2026-06-21T11:53:55.9205227Z             },
2026-06-21T11:53:55.9205395Z             {
2026-06-21T11:53:55.9205579Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T11:53:55.9205823Z               "line": 184
2026-06-21T11:53:55.9206010Z             },
2026-06-21T11:53:55.9206180Z             {
2026-06-21T11:53:55.9206363Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T11:53:55.9206610Z               "line": 204
2026-06-21T11:53:55.9206790Z             },
2026-06-21T11:53:55.9206957Z             {
2026-06-21T11:53:55.9207145Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9207379Z               "line": 8334
2026-06-21T11:53:55.9207564Z             }
2026-06-21T11:53:55.9207727Z           ]
2026-06-21T11:53:55.9207879Z         }
2026-06-21T11:53:55.9208042Z       }
2026-06-21T11:53:55.9208198Z     },
2026-06-21T11:53:55.9208361Z     {
2026-06-21T11:53:55.9208537Z       "id": "REQ-CONSENT-2",
2026-06-21T11:53:55.9210114Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T11:53:55.9211077Z       "requiredStages": [
2026-06-21T11:53:55.9211288Z         "impl",
2026-06-21T11:53:55.9211579Z         "unit"
2026-06-21T11:53:55.9211746Z       ],
2026-06-21T11:53:55.9211907Z       "stages": {
2026-06-21T11:53:55.9212178Z         "doc": {
2026-06-21T11:53:55.9212352Z           "complete": false,
2026-06-21T11:53:55.9212549Z           "evidence": []
2026-06-21T11:53:55.9212734Z         },
2026-06-21T11:53:55.9212906Z         "impl": {
2026-06-21T11:53:55.9213083Z           "complete": true,
2026-06-21T11:53:55.9213277Z           "evidence": [
2026-06-21T11:53:55.9213450Z             {
2026-06-21T11:53:55.9213654Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9213912Z               "line": 140
2026-06-21T11:53:55.9214094Z             },
2026-06-21T11:53:55.9214259Z             {
2026-06-21T11:53:55.9214455Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9214700Z               "line": 165
2026-06-21T11:53:55.9214883Z             },
2026-06-21T11:53:55.9215045Z             {
2026-06-21T11:53:55.9215243Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9215491Z               "line": 199
2026-06-21T11:53:55.9215674Z             },
2026-06-21T11:53:55.9215848Z             {
2026-06-21T11:53:55.9216049Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9216293Z               "line": 241
2026-06-21T11:53:55.9216483Z             },
2026-06-21T11:53:55.9216646Z             {
2026-06-21T11:53:55.9216846Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9217084Z               "line": 269
2026-06-21T11:53:55.9217276Z             },
2026-06-21T11:53:55.9217441Z             {
2026-06-21T11:53:55.9217636Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9217887Z               "line": 300
2026-06-21T11:53:55.9218072Z             },
2026-06-21T11:53:55.9218235Z             {
2026-06-21T11:53:55.9218430Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9218669Z               "line": 6839
2026-06-21T11:53:55.9218865Z             },
2026-06-21T11:53:55.9219127Z             {
2026-06-21T11:53:55.9219322Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9219546Z               "line": 6897
2026-06-21T11:53:55.9219742Z             }
2026-06-21T11:53:55.9219922Z           ]
2026-06-21T11:53:55.9220086Z         },
2026-06-21T11:53:55.9220250Z         "int": {
2026-06-21T11:53:55.9220422Z           "complete": false,
2026-06-21T11:53:55.9220627Z           "evidence": []
2026-06-21T11:53:55.9220804Z         },
2026-06-21T11:53:55.9220966Z         "unit": {
2026-06-21T11:53:55.9221138Z           "complete": true,
2026-06-21T11:53:55.9221348Z           "evidence": [
2026-06-21T11:53:55.9221533Z             {
2026-06-21T11:53:55.9221720Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9221967Z               "line": 419
2026-06-21T11:53:55.9222196Z             },
2026-06-21T11:53:55.9222365Z             {
2026-06-21T11:53:55.9222562Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9222817Z               "line": 436
2026-06-21T11:53:55.9223013Z             },
2026-06-21T11:53:55.9223175Z             {
2026-06-21T11:53:55.9223381Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9223629Z               "line": 472
2026-06-21T11:53:55.9223814Z             },
2026-06-21T11:53:55.9223981Z             {
2026-06-21T11:53:55.9224180Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:55.9224424Z               "line": 516
2026-06-21T11:53:55.9224616Z             },
2026-06-21T11:53:55.9224782Z             {
2026-06-21T11:53:55.9224969Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9225193Z               "line": 9614
2026-06-21T11:53:55.9225387Z             },
2026-06-21T11:53:55.9225549Z             {
2026-06-21T11:53:55.9225741Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9225981Z               "line": 9696
2026-06-21T11:53:55.9226181Z             }
2026-06-21T11:53:55.9226347Z           ]
2026-06-21T11:53:55.9226619Z         }
2026-06-21T11:53:55.9226786Z       }
2026-06-21T11:53:55.9226948Z     },
2026-06-21T11:53:55.9227201Z     {
2026-06-21T11:53:55.9227382Z       "id": "REQ-CONSENT-3",
2026-06-21T11:53:55.9229605Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T11:53:55.9231350Z       "requiredStages": [
2026-06-21T11:53:55.9231545Z         "doc",
2026-06-21T11:53:55.9231717Z         "impl",
2026-06-21T11:53:55.9231898Z         "unit",
2026-06-21T11:53:55.9232065Z         "int"
2026-06-21T11:53:55.9232232Z       ],
2026-06-21T11:53:55.9232418Z       "stages": {
2026-06-21T11:53:55.9232600Z         "doc": {
2026-06-21T11:53:55.9232780Z           "complete": true,
2026-06-21T11:53:55.9232985Z           "evidence": [
2026-06-21T11:53:55.9233169Z             {
2026-06-21T11:53:55.9233349Z               "path": "CONTEXT.md",
2026-06-21T11:53:55.9233564Z               "line": 304
2026-06-21T11:53:55.9233754Z             }
2026-06-21T11:53:55.9233922Z           ]
2026-06-21T11:53:55.9234088Z         },
2026-06-21T11:53:55.9234255Z         "impl": {
2026-06-21T11:53:55.9234440Z           "complete": true,
2026-06-21T11:53:55.9234641Z           "evidence": [
2026-06-21T11:53:55.9234823Z             {
2026-06-21T11:53:55.9235027Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:55.9235284Z               "line": 123
2026-06-21T11:53:55.9235472Z             },
2026-06-21T11:53:55.9235642Z             {
2026-06-21T11:53:55.9235862Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:55.9236118Z               "line": 162
2026-06-21T11:53:55.9236320Z             },
2026-06-21T11:53:55.9236484Z             {
2026-06-21T11:53:55.9236683Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:55.9236931Z               "line": 291
2026-06-21T11:53:55.9237123Z             },
2026-06-21T11:53:55.9237293Z             {
2026-06-21T11:53:55.9237504Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:55.9237761Z               "line": 574
2026-06-21T11:53:55.9237942Z             },
2026-06-21T11:53:55.9238114Z             {
2026-06-21T11:53:55.9238320Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:55.9238575Z               "line": 824
2026-06-21T11:53:55.9238779Z             },
2026-06-21T11:53:55.9239007Z             {
2026-06-21T11:53:55.9239197Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9239446Z               "line": 6965
2026-06-21T11:53:55.9239632Z             }
2026-06-21T11:53:55.9239794Z           ]
2026-06-21T11:53:55.9239971Z         },
2026-06-21T11:53:55.9240132Z         "int": {
2026-06-21T11:53:55.9240314Z           "complete": true,
2026-06-21T11:53:55.9240504Z           "evidence": [
2026-06-21T11:53:55.9240685Z             {
2026-06-21T11:53:55.9240892Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T11:53:55.9241143Z               "line": 16
2026-06-21T11:53:55.9241325Z             }
2026-06-21T11:53:55.9241499Z           ]
2026-06-21T11:53:55.9241658Z         },
2026-06-21T11:53:55.9241823Z         "unit": {
2026-06-21T11:53:55.9241996Z           "complete": true,
2026-06-21T11:53:55.9242201Z           "evidence": [
2026-06-21T11:53:55.9242381Z             {
2026-06-21T11:53:55.9242587Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:55.9242840Z               "line": 1019
2026-06-21T11:53:55.9243030Z             },
2026-06-21T11:53:55.9243311Z             {
2026-06-21T11:53:55.9243509Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:55.9243868Z               "line": 1066
2026-06-21T11:53:55.9244056Z             },
2026-06-21T11:53:55.9244220Z             {
2026-06-21T11:53:55.9244419Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:55.9244667Z               "line": 1394
2026-06-21T11:53:55.9244858Z             }
2026-06-21T11:53:55.9245020Z           ]
2026-06-21T11:53:55.9245178Z         }
2026-06-21T11:53:55.9245344Z       }
2026-06-21T11:53:55.9245506Z     },
2026-06-21T11:53:55.9245659Z     {
2026-06-21T11:53:55.9245840Z       "id": "REQ-CONV-1",
2026-06-21T11:53:55.9247368Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T11:53:55.9248736Z       "requiredStages": [
2026-06-21T11:53:55.9249022Z         "impl",
2026-06-21T11:53:55.9249202Z         "unit"
2026-06-21T11:53:55.9249372Z       ],
2026-06-21T11:53:55.9249538Z       "stages": {
2026-06-21T11:53:55.9249701Z         "doc": {
2026-06-21T11:53:55.9249877Z           "complete": false,
2026-06-21T11:53:55.9250086Z           "evidence": []
2026-06-21T11:53:55.9250273Z         },
2026-06-21T11:53:55.9250434Z         "impl": {
2026-06-21T11:53:55.9250611Z           "complete": true,
2026-06-21T11:53:55.9250807Z           "evidence": [
2026-06-21T11:53:55.9250993Z             {
2026-06-21T11:53:55.9251213Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9251471Z               "line": 988
2026-06-21T11:53:55.9251660Z             },
2026-06-21T11:53:55.9251823Z             {
2026-06-21T11:53:55.9252036Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:55.9252288Z               "line": 94
2026-06-21T11:53:55.9252471Z             },
2026-06-21T11:53:55.9252641Z             {
2026-06-21T11:53:55.9252851Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:55.9253100Z               "line": 345
2026-06-21T11:53:55.9253289Z             },
2026-06-21T11:53:55.9253458Z             {
2026-06-21T11:53:55.9253652Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:55.9253900Z               "line": 387
2026-06-21T11:53:55.9254087Z             },
2026-06-21T11:53:55.9254257Z             {
2026-06-21T11:53:55.9254456Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:55.9254713Z               "line": 472
2026-06-21T11:53:55.9254903Z             },
2026-06-21T11:53:55.9255066Z             {
2026-06-21T11:53:55.9255265Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9255513Z               "line": 667
2026-06-21T11:53:55.9255690Z             },
2026-06-21T11:53:55.9255861Z             {
2026-06-21T11:53:55.9256066Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9256325Z               "line": 693
2026-06-21T11:53:55.9263149Z             },
2026-06-21T11:53:55.9263393Z             {
2026-06-21T11:53:55.9263622Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:55.9263907Z               "line": 369
2026-06-21T11:53:55.9264098Z             },
2026-06-21T11:53:55.9264266Z             {
2026-06-21T11:53:55.9264488Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T11:53:55.9264746Z               "line": 19
2026-06-21T11:53:55.9264936Z             }
2026-06-21T11:53:55.9265096Z           ]
2026-06-21T11:53:55.9265253Z         },
2026-06-21T11:53:55.9265406Z         "int": {
2026-06-21T11:53:55.9265583Z           "complete": false,
2026-06-21T11:53:55.9265782Z           "evidence": []
2026-06-21T11:53:55.9266135Z         },
2026-06-21T11:53:55.9266302Z         "unit": {
2026-06-21T11:53:55.9266494Z           "complete": true,
2026-06-21T11:53:55.9266794Z           "evidence": [
2026-06-21T11:53:55.9266979Z             {
2026-06-21T11:53:55.9267186Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9267434Z               "line": 1263
2026-06-21T11:53:55.9267622Z             },
2026-06-21T11:53:55.9267779Z             {
2026-06-21T11:53:55.9267977Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T11:53:55.9268226Z               "line": 108
2026-06-21T11:53:55.9268411Z             },
2026-06-21T11:53:55.9268573Z             {
2026-06-21T11:53:55.9268770Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T11:53:55.9269108Z               "line": 134
2026-06-21T11:53:55.9269284Z             },
2026-06-21T11:53:55.9269446Z             {
2026-06-21T11:53:55.9269636Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T11:53:55.9269899Z               "line": 144
2026-06-21T11:53:55.9270076Z             }
2026-06-21T11:53:55.9270246Z           ]
2026-06-21T11:53:55.9270417Z         }
2026-06-21T11:53:55.9270577Z       }
2026-06-21T11:53:55.9270731Z     },
2026-06-21T11:53:55.9270882Z     {
2026-06-21T11:53:55.9271045Z       "id": "REQ-CONV-2",
2026-06-21T11:53:55.9272309Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T11:53:55.9273404Z       "requiredStages": [
2026-06-21T11:53:55.9273596Z         "impl",
2026-06-21T11:53:55.9273770Z         "unit"
2026-06-21T11:53:55.9273929Z       ],
2026-06-21T11:53:55.9274090Z       "stages": {
2026-06-21T11:53:55.9274263Z         "doc": {
2026-06-21T11:53:55.9274453Z           "complete": false,
2026-06-21T11:53:55.9274663Z           "evidence": []
2026-06-21T11:53:55.9274845Z         },
2026-06-21T11:53:55.9275021Z         "impl": {
2026-06-21T11:53:55.9275193Z           "complete": true,
2026-06-21T11:53:55.9275382Z           "evidence": [
2026-06-21T11:53:55.9275562Z             {
2026-06-21T11:53:55.9275756Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9276023Z               "line": 409
2026-06-21T11:53:55.9276204Z             },
2026-06-21T11:53:55.9276375Z             {
2026-06-21T11:53:55.9276577Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T11:53:55.9276829Z               "line": 119
2026-06-21T11:53:55.9277015Z             },
2026-06-21T11:53:55.9277172Z             {
2026-06-21T11:53:55.9277374Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:55.9277625Z               "line": 841
2026-06-21T11:53:55.9277797Z             },
2026-06-21T11:53:55.9277969Z             {
2026-06-21T11:53:55.9278182Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:55.9278434Z               "line": 852
2026-06-21T11:53:55.9278623Z             },
2026-06-21T11:53:55.9278782Z             {
2026-06-21T11:53:55.9279043Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:55.9279287Z               "line": 334
2026-06-21T11:53:55.9279467Z             },
2026-06-21T11:53:55.9279640Z             {
2026-06-21T11:53:55.9279820Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9280049Z               "line": 3074
2026-06-21T11:53:55.9280231Z             },
2026-06-21T11:53:55.9280396Z             {
2026-06-21T11:53:55.9280574Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9280796Z               "line": 3090
2026-06-21T11:53:55.9280991Z             },
2026-06-21T11:53:55.9281156Z             {
2026-06-21T11:53:55.9281334Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9281548Z               "line": 3170
2026-06-21T11:53:55.9281843Z             }
2026-06-21T11:53:55.9282001Z           ]
2026-06-21T11:53:55.9282253Z         },
2026-06-21T11:53:55.9282420Z         "int": {
2026-06-21T11:53:55.9282592Z           "complete": false,
2026-06-21T11:53:55.9282797Z           "evidence": []
2026-06-21T11:53:55.9282987Z         },
2026-06-21T11:53:55.9283146Z         "unit": {
2026-06-21T11:53:55.9283316Z           "complete": true,
2026-06-21T11:53:55.9283513Z           "evidence": [
2026-06-21T11:53:55.9283692Z             {
2026-06-21T11:53:55.9283889Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9284136Z               "line": 889
2026-06-21T11:53:55.9284321Z             },
2026-06-21T11:53:55.9284475Z             {
2026-06-21T11:53:55.9284674Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9284927Z               "line": 1014
2026-06-21T11:53:55.9285109Z             },
2026-06-21T11:53:55.9285271Z             {
2026-06-21T11:53:55.9285486Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T11:53:55.9285753Z               "line": 215
2026-06-21T11:53:55.9285937Z             }
2026-06-21T11:53:55.9286094Z           ]
2026-06-21T11:53:55.9286259Z         }
2026-06-21T11:53:55.9286412Z       }
2026-06-21T11:53:55.9286564Z     },
2026-06-21T11:53:55.9286723Z     {
2026-06-21T11:53:55.9286888Z       "id": "REQ-DAEMON-1",
2026-06-21T11:53:55.9287155Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T11:53:55.9287456Z       "requiredStages": [
2026-06-21T11:53:55.9287642Z         "impl",
2026-06-21T11:53:55.9287809Z         "unit",
2026-06-21T11:53:55.9287986Z         "int"
2026-06-21T11:53:55.9288147Z       ],
2026-06-21T11:53:55.9288306Z       "stages": {
2026-06-21T11:53:55.9288476Z         "doc": {
2026-06-21T11:53:55.9288654Z           "complete": false,
2026-06-21T11:53:55.9288851Z           "evidence": []
2026-06-21T11:53:55.9289135Z         },
2026-06-21T11:53:55.9289308Z         "impl": {
2026-06-21T11:53:55.9289502Z           "complete": true,
2026-06-21T11:53:55.9289694Z           "evidence": [
2026-06-21T11:53:55.9289876Z             {
2026-06-21T11:53:55.9290079Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9290328Z               "line": 229
2026-06-21T11:53:55.9290510Z             },
2026-06-21T11:53:55.9290661Z             {
2026-06-21T11:53:55.9290853Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:55.9291101Z               "line": 12
2026-06-21T11:53:55.9291271Z             },
2026-06-21T11:53:55.9291428Z             {
2026-06-21T11:53:55.9291607Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9291846Z               "line": 16
2026-06-21T11:53:55.9292026Z             },
2026-06-21T11:53:55.9292185Z             {
2026-06-21T11:53:55.9292384Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9292627Z               "line": 309
2026-06-21T11:53:55.9292823Z             },
2026-06-21T11:53:55.9292990Z             {
2026-06-21T11:53:55.9293190Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9293434Z               "line": 24
2026-06-21T11:53:55.9293615Z             },
2026-06-21T11:53:55.9293763Z             {
2026-06-21T11:53:55.9293958Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9294205Z               "line": 262
2026-06-21T11:53:55.9294377Z             },
2026-06-21T11:53:55.9294543Z             {
2026-06-21T11:53:55.9294735Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9294973Z               "line": 279
2026-06-21T11:53:55.9295154Z             },
2026-06-21T11:53:55.9295302Z             {
2026-06-21T11:53:55.9295497Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9295735Z               "line": 356
2026-06-21T11:53:55.9295908Z             },
2026-06-21T11:53:55.9296069Z             {
2026-06-21T11:53:55.9296276Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9296635Z               "line": 670
2026-06-21T11:53:55.9296814Z             },
2026-06-21T11:53:55.9297082Z             {
2026-06-21T11:53:55.9297273Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T11:53:55.9297525Z               "line": 15
2026-06-21T11:53:55.9297711Z             },
2026-06-21T11:53:55.9297878Z             {
2026-06-21T11:53:55.9298064Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9298298Z               "line": 241
2026-06-21T11:53:55.9298479Z             },
2026-06-21T11:53:55.9298640Z             {
2026-06-21T11:53:55.9298832Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T11:53:55.9299157Z               "line": 13
2026-06-21T11:53:55.9299340Z             },
2026-06-21T11:53:55.9299507Z             {
2026-06-21T11:53:55.9299700Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9299930Z               "line": 382
2026-06-21T11:53:55.9300126Z             },
2026-06-21T11:53:55.9300291Z             {
2026-06-21T11:53:55.9300484Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9300731Z               "line": 494
2026-06-21T11:53:55.9300912Z             }
2026-06-21T11:53:55.9301070Z           ]
2026-06-21T11:53:55.9301236Z         },
2026-06-21T11:53:55.9301389Z         "int": {
2026-06-21T11:53:55.9301570Z           "complete": true,
2026-06-21T11:53:55.9301766Z           "evidence": [
2026-06-21T11:53:55.9301945Z             {
2026-06-21T11:53:55.9302186Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T11:53:55.9302487Z               "line": 2
2026-06-21T11:53:55.9302668Z             },
2026-06-21T11:53:55.9302839Z             {
2026-06-21T11:53:55.9303073Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T11:53:55.9303365Z               "line": 16
2026-06-21T11:53:55.9303555Z             },
2026-06-21T11:53:55.9303722Z             {
2026-06-21T11:53:55.9303942Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T11:53:55.9304213Z               "line": 12
2026-06-21T11:53:55.9304417Z             },
2026-06-21T11:53:55.9304591Z             {
2026-06-21T11:53:55.9304789Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T11:53:55.9305046Z               "line": 12
2026-06-21T11:53:55.9305232Z             },
2026-06-21T11:53:55.9305394Z             {
2026-06-21T11:53:55.9305609Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T11:53:55.9305882Z               "line": 44
2026-06-21T11:53:55.9306066Z             }
2026-06-21T11:53:55.9306234Z           ]
2026-06-21T11:53:55.9306396Z         },
2026-06-21T11:53:55.9306558Z         "unit": {
2026-06-21T11:53:55.9306739Z           "complete": true,
2026-06-21T11:53:55.9306943Z           "evidence": [
2026-06-21T11:53:55.9307124Z             {
2026-06-21T11:53:55.9307318Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:55.9307576Z               "line": 285
2026-06-21T11:53:55.9307751Z             },
2026-06-21T11:53:55.9307923Z             {
2026-06-21T11:53:55.9308110Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:55.9308346Z               "line": 293
2026-06-21T11:53:55.9308534Z             },
2026-06-21T11:53:55.9308705Z             {
2026-06-21T11:53:55.9308896Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:55.9309229Z               "line": 309
2026-06-21T11:53:55.9309416Z             },
2026-06-21T11:53:55.9309587Z             {
2026-06-21T11:53:55.9309779Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:55.9310025Z               "line": 317
2026-06-21T11:53:55.9310199Z             },
2026-06-21T11:53:55.9310366Z             {
2026-06-21T11:53:55.9310565Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9310814Z               "line": 659
2026-06-21T11:53:55.9311000Z             },
2026-06-21T11:53:55.9311276Z             {
2026-06-21T11:53:55.9311482Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9311825Z               "line": 729
2026-06-21T11:53:55.9312002Z             },
2026-06-21T11:53:55.9312158Z             {
2026-06-21T11:53:55.9312355Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9312605Z               "line": 1211
2026-06-21T11:53:55.9312789Z             },
2026-06-21T11:53:55.9312957Z             {
2026-06-21T11:53:55.9313151Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9313399Z               "line": 1248
2026-06-21T11:53:55.9313587Z             },
2026-06-21T11:53:55.9313752Z             {
2026-06-21T11:53:55.9313939Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9314187Z               "line": 1271
2026-06-21T11:53:55.9314386Z             },
2026-06-21T11:53:55.9314555Z             {
2026-06-21T11:53:55.9314763Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9315030Z               "line": 1300
2026-06-21T11:53:55.9315222Z             },
2026-06-21T11:53:55.9315400Z             {
2026-06-21T11:53:55.9315597Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9315836Z               "line": 1348
2026-06-21T11:53:55.9316030Z             },
2026-06-21T11:53:55.9316198Z             {
2026-06-21T11:53:55.9316393Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9316645Z               "line": 1391
2026-06-21T11:53:55.9316832Z             },
2026-06-21T11:53:55.9316989Z             {
2026-06-21T11:53:55.9317189Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T11:53:55.9317438Z               "line": 106
2026-06-21T11:53:55.9317632Z             },
2026-06-21T11:53:55.9317788Z             {
2026-06-21T11:53:55.9317982Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T11:53:55.9318221Z               "line": 132
2026-06-21T11:53:55.9318417Z             },
2026-06-21T11:53:55.9318582Z             {
2026-06-21T11:53:55.9318784Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9319122Z               "line": 530
2026-06-21T11:53:55.9319314Z             }
2026-06-21T11:53:55.9319479Z           ]
2026-06-21T11:53:55.9319643Z         }
2026-06-21T11:53:55.9319804Z       }
2026-06-21T11:53:55.9319967Z     },
2026-06-21T11:53:55.9320123Z     {
2026-06-21T11:53:55.9320296Z       "id": "REQ-DAEMON-2",
2026-06-21T11:53:55.9320551Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T11:53:55.9320830Z       "requiredStages": [
2026-06-21T11:53:55.9321031Z         "impl",
2026-06-21T11:53:55.9321202Z         "unit",
2026-06-21T11:53:55.9321374Z         "int"
2026-06-21T11:53:55.9321537Z       ],
2026-06-21T11:53:55.9321699Z       "stages": {
2026-06-21T11:53:55.9321871Z         "doc": {
2026-06-21T11:53:55.9322051Z           "complete": true,
2026-06-21T11:53:55.9322247Z           "evidence": [
2026-06-21T11:53:55.9322442Z             {
2026-06-21T11:53:55.9322651Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T11:53:55.9322891Z               "line": 250
2026-06-21T11:53:55.9323080Z             }
2026-06-21T11:53:55.9323246Z           ]
2026-06-21T11:53:55.9323397Z         },
2026-06-21T11:53:55.9323560Z         "impl": {
2026-06-21T11:53:55.9323735Z           "complete": true,
2026-06-21T11:53:55.9323937Z           "evidence": [
2026-06-21T11:53:55.9324118Z             {
2026-06-21T11:53:55.9324302Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9324536Z               "line": 23
2026-06-21T11:53:55.9324733Z             },
2026-06-21T11:53:55.9324900Z             {
2026-06-21T11:53:55.9325096Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9325338Z               "line": 884
2026-06-21T11:53:55.9325523Z             },
2026-06-21T11:53:55.9325692Z             {
2026-06-21T11:53:55.9325880Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9326233Z               "line": 909
2026-06-21T11:53:55.9326420Z             },
2026-06-21T11:53:55.9326581Z             {
2026-06-21T11:53:55.9326857Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9327096Z               "line": 1145
2026-06-21T11:53:55.9327278Z             },
2026-06-21T11:53:55.9327449Z             {
2026-06-21T11:53:55.9327641Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9327888Z               "line": 32
2026-06-21T11:53:55.9328073Z             },
2026-06-21T11:53:55.9328239Z             {
2026-06-21T11:53:55.9328438Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9328682Z               "line": 1228
2026-06-21T11:53:55.9328872Z             },
2026-06-21T11:53:55.9329119Z             {
2026-06-21T11:53:55.9329306Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9329550Z               "line": 2064
2026-06-21T11:53:55.9329734Z             },
2026-06-21T11:53:55.9329907Z             {
2026-06-21T11:53:55.9330097Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9333351Z               "line": 2351
2026-06-21T11:53:55.9333602Z             },
2026-06-21T11:53:55.9333769Z             {
2026-06-21T11:53:55.9333966Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T11:53:55.9334214Z               "line": 11
2026-06-21T11:53:55.9334402Z             },
2026-06-21T11:53:55.9334567Z             {
2026-06-21T11:53:55.9334759Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9335007Z               "line": 153
2026-06-21T11:53:55.9335192Z             },
2026-06-21T11:53:55.9335355Z             {
2026-06-21T11:53:55.9335540Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9335783Z               "line": 343
2026-06-21T11:53:55.9335961Z             },
2026-06-21T11:53:55.9336127Z             {
2026-06-21T11:53:55.9336319Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9336564Z               "line": 13
2026-06-21T11:53:55.9336750Z             },
2026-06-21T11:53:55.9336898Z             {
2026-06-21T11:53:55.9337107Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9337352Z               "line": 27
2026-06-21T11:53:55.9337533Z             },
2026-06-21T11:53:55.9337690Z             {
2026-06-21T11:53:55.9337886Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9338128Z               "line": 173
2026-06-21T11:53:55.9338300Z             },
2026-06-21T11:53:55.9338462Z             {
2026-06-21T11:53:55.9338652Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9338890Z               "line": 682
2026-06-21T11:53:55.9339174Z             },
2026-06-21T11:53:55.9339341Z             {
2026-06-21T11:53:55.9339537Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9339780Z               "line": 903
2026-06-21T11:53:55.9339960Z             },
2026-06-21T11:53:55.9340119Z             {
2026-06-21T11:53:55.9340318Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9340562Z               "line": 1050
2026-06-21T11:53:55.9340749Z             },
2026-06-21T11:53:55.9340919Z             {
2026-06-21T11:53:55.9341111Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9341345Z               "line": 1139
2026-06-21T11:53:55.9341524Z             },
2026-06-21T11:53:55.9341604Z             {
2026-06-21T11:53:55.9341724Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9341808Z               "line": 1261
2026-06-21T11:53:55.9341889Z             },
2026-06-21T11:53:55.9341974Z             {
2026-06-21T11:53:55.9342094Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T11:53:55.9342184Z               "line": 10
2026-06-21T11:53:55.9342260Z             }
2026-06-21T11:53:55.9342342Z           ]
2026-06-21T11:53:55.9342423Z         },
2026-06-21T11:53:55.9342508Z         "int": {
2026-06-21T11:53:55.9342762Z           "complete": true,
2026-06-21T11:53:55.9342851Z           "evidence": [
2026-06-21T11:53:55.9343015Z             {
2026-06-21T11:53:55.9343138Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:55.9343223Z               "line": 17
2026-06-21T11:53:55.9343301Z             },
2026-06-21T11:53:55.9343382Z             {
2026-06-21T11:53:55.9343500Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T11:53:55.9343577Z               "line": 90
2026-06-21T11:53:55.9343663Z             },
2026-06-21T11:53:55.9343734Z             {
2026-06-21T11:53:55.9343858Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T11:53:55.9343945Z               "line": 110
2026-06-21T11:53:55.9344030Z             },
2026-06-21T11:53:55.9344110Z             {
2026-06-21T11:53:55.9344228Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T11:53:55.9344314Z               "line": 186
2026-06-21T11:53:55.9344408Z             },
2026-06-21T11:53:55.9344493Z             {
2026-06-21T11:53:55.9344608Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T11:53:55.9344690Z               "line": 309
2026-06-21T11:53:55.9344775Z             },
2026-06-21T11:53:55.9344860Z             {
2026-06-21T11:53:55.9344981Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T11:53:55.9345066Z               "line": 128
2026-06-21T11:53:55.9345146Z             },
2026-06-21T11:53:55.9345229Z             {
2026-06-21T11:53:55.9345347Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T11:53:55.9345437Z               "line": 59
2026-06-21T11:53:55.9345509Z             }
2026-06-21T11:53:55.9345596Z           ]
2026-06-21T11:53:55.9345676Z         },
2026-06-21T11:53:55.9345766Z         "unit": {
2026-06-21T11:53:55.9345848Z           "complete": true,
2026-06-21T11:53:55.9345929Z           "evidence": [
2026-06-21T11:53:55.9346015Z             {
2026-06-21T11:53:55.9346129Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T11:53:55.9346220Z               "line": 62
2026-06-21T11:53:55.9346315Z             },
2026-06-21T11:53:55.9346401Z             {
2026-06-21T11:53:55.9346512Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T11:53:55.9346587Z               "line": 76
2026-06-21T11:53:55.9346667Z             },
2026-06-21T11:53:55.9346744Z             {
2026-06-21T11:53:55.9346860Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T11:53:55.9346944Z               "line": 88
2026-06-21T11:53:55.9347019Z             },
2026-06-21T11:53:55.9347100Z             {
2026-06-21T11:53:55.9347211Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:55.9347292Z               "line": 347
2026-06-21T11:53:55.9347372Z             },
2026-06-21T11:53:55.9347459Z             {
2026-06-21T11:53:55.9347563Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9347649Z               "line": 901
2026-06-21T11:53:55.9347730Z             },
2026-06-21T11:53:55.9347817Z             {
2026-06-21T11:53:55.9347917Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9348001Z               "line": 909
2026-06-21T11:53:55.9348093Z             },
2026-06-21T11:53:55.9348169Z             {
2026-06-21T11:53:55.9348274Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9348364Z               "line": 926
2026-06-21T11:53:55.9348451Z             },
2026-06-21T11:53:55.9348536Z             {
2026-06-21T11:53:55.9348640Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9348737Z               "line": 1035
2026-06-21T11:53:55.9348823Z             },
2026-06-21T11:53:55.9348907Z             {
2026-06-21T11:53:55.9349100Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9349184Z               "line": 1370
2026-06-21T11:53:55.9349298Z             },
2026-06-21T11:53:55.9349441Z             {
2026-06-21T11:53:55.9349577Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9349768Z               "line": 1382
2026-06-21T11:53:55.9349944Z             },
2026-06-21T11:53:55.9350025Z             {
2026-06-21T11:53:55.9350150Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T11:53:55.9350230Z               "line": 110
2026-06-21T11:53:55.9350316Z             },
2026-06-21T11:53:55.9350398Z             {
2026-06-21T11:53:55.9350511Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T11:53:55.9350597Z               "line": 145
2026-06-21T11:53:55.9350684Z             }
2026-06-21T11:53:55.9350764Z           ]
2026-06-21T11:53:55.9350845Z         }
2026-06-21T11:53:55.9350931Z       }
2026-06-21T11:53:55.9351003Z     },
2026-06-21T11:53:55.9351088Z     {
2026-06-21T11:53:55.9351183Z       "id": "REQ-DAEMON-3",
2026-06-21T11:53:55.9351338Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T11:53:55.9351431Z       "requiredStages": [
2026-06-21T11:53:55.9351527Z         "impl",
2026-06-21T11:53:55.9351609Z         "unit",
2026-06-21T11:53:55.9351685Z         "int"
2026-06-21T11:53:55.9351770Z       ],
2026-06-21T11:53:55.9351851Z       "stages": {
2026-06-21T11:53:55.9351938Z         "doc": {
2026-06-21T11:53:55.9352023Z           "complete": false,
2026-06-21T11:53:55.9352113Z           "evidence": []
2026-06-21T11:53:55.9352193Z         },
2026-06-21T11:53:55.9352275Z         "impl": {
2026-06-21T11:53:55.9352350Z           "complete": true,
2026-06-21T11:53:55.9352439Z           "evidence": [
2026-06-21T11:53:55.9352524Z             {
2026-06-21T11:53:55.9352645Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9352730Z               "line": 14
2026-06-21T11:53:55.9352815Z             },
2026-06-21T11:53:55.9352897Z             {
2026-06-21T11:53:55.9353012Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T11:53:55.9353135Z               "line": 11
2026-06-21T11:53:55.9353227Z             },
2026-06-21T11:53:55.9353312Z             {
2026-06-21T11:53:55.9353426Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.9353508Z               "line": 305
2026-06-21T11:53:55.9353594Z             },
2026-06-21T11:53:55.9353679Z             {
2026-06-21T11:53:55.9353779Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9353866Z               "line": 1956
2026-06-21T11:53:55.9353942Z             },
2026-06-21T11:53:55.9354027Z             {
2026-06-21T11:53:55.9354127Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9354219Z               "line": 4235
2026-06-21T11:53:55.9354303Z             },
2026-06-21T11:53:55.9354380Z             {
2026-06-21T11:53:55.9354486Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9354566Z               "line": 4256
2026-06-21T11:53:55.9354646Z             }
2026-06-21T11:53:55.9354727Z           ]
2026-06-21T11:53:55.9354817Z         },
2026-06-21T11:53:55.9354893Z         "int": {
2026-06-21T11:53:55.9354982Z           "complete": true,
2026-06-21T11:53:55.9355077Z           "evidence": [
2026-06-21T11:53:55.9355154Z             {
2026-06-21T11:53:55.9355278Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:55.9355354Z               "line": 49
2026-06-21T11:53:55.9355444Z             },
2026-06-21T11:53:55.9355526Z             {
2026-06-21T11:53:55.9355631Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:55.9355716Z               "line": 487
2026-06-21T11:53:55.9355798Z             }
2026-06-21T11:53:55.9355889Z           ]
2026-06-21T11:53:55.9355964Z         },
2026-06-21T11:53:55.9356055Z         "unit": {
2026-06-21T11:53:55.9356141Z           "complete": true,
2026-06-21T11:53:55.9356222Z           "evidence": [
2026-06-21T11:53:55.9356307Z             {
2026-06-21T11:53:55.9356423Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9356503Z               "line": 1553
2026-06-21T11:53:55.9356589Z             },
2026-06-21T11:53:55.9356748Z             {
2026-06-21T11:53:55.9356856Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9357014Z               "line": 10715
2026-06-21T11:53:55.9357100Z             }
2026-06-21T11:53:55.9357175Z           ]
2026-06-21T11:53:55.9357266Z         }
2026-06-21T11:53:55.9357343Z       }
2026-06-21T11:53:55.9357429Z     },
2026-06-21T11:53:55.9357518Z     {
2026-06-21T11:53:55.9357608Z       "id": "REQ-DAEMON-4",
2026-06-21T11:53:55.9357737Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T11:53:55.9357819Z       "requiredStages": [
2026-06-21T11:53:55.9357903Z         "impl",
2026-06-21T11:53:55.9357985Z         "unit",
2026-06-21T11:53:55.9358072Z         "int"
2026-06-21T11:53:55.9358153Z       ],
2026-06-21T11:53:55.9358232Z       "stages": {
2026-06-21T11:53:55.9358314Z         "doc": {
2026-06-21T11:53:55.9358406Z           "complete": false,
2026-06-21T11:53:55.9358496Z           "evidence": []
2026-06-21T11:53:55.9358580Z         },
2026-06-21T11:53:55.9358682Z         "impl": {
2026-06-21T11:53:55.9358767Z           "complete": true,
2026-06-21T11:53:55.9358858Z           "evidence": [
2026-06-21T11:53:55.9359026Z             {
2026-06-21T11:53:55.9359139Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9359220Z               "line": 464
2026-06-21T11:53:55.9359302Z             },
2026-06-21T11:53:55.9359383Z             {
2026-06-21T11:53:55.9359501Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9359582Z               "line": 529
2026-06-21T11:53:55.9359665Z             },
2026-06-21T11:53:55.9359744Z             {
2026-06-21T11:53:55.9359863Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9359948Z               "line": 551
2026-06-21T11:53:55.9360029Z             }
2026-06-21T11:53:55.9360113Z           ]
2026-06-21T11:53:55.9360184Z         },
2026-06-21T11:53:55.9360266Z         "int": {
2026-06-21T11:53:55.9360347Z           "complete": true,
2026-06-21T11:53:55.9360447Z           "evidence": [
2026-06-21T11:53:55.9360523Z             {
2026-06-21T11:53:55.9360643Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T11:53:55.9360747Z               "line": 42
2026-06-21T11:53:55.9360828Z             }
2026-06-21T11:53:55.9360910Z           ]
2026-06-21T11:53:55.9360991Z         },
2026-06-21T11:53:55.9361072Z         "unit": {
2026-06-21T11:53:55.9361162Z           "complete": true,
2026-06-21T11:53:55.9361254Z           "evidence": [
2026-06-21T11:53:55.9361329Z             {
2026-06-21T11:53:55.9361443Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:55.9361530Z               "line": 428
2026-06-21T11:53:55.9361611Z             },
2026-06-21T11:53:55.9361692Z             {
2026-06-21T11:53:55.9361796Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9361893Z               "line": 957
2026-06-21T11:53:55.9361977Z             },
2026-06-21T11:53:55.9362049Z             {
2026-06-21T11:53:55.9362165Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9362255Z               "line": 1027
2026-06-21T11:53:55.9362339Z             },
2026-06-21T11:53:55.9362421Z             {
2026-06-21T11:53:55.9362542Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9362626Z               "line": 1057
2026-06-21T11:53:55.9362706Z             },
2026-06-21T11:53:55.9362792Z             {
2026-06-21T11:53:55.9362910Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9362999Z               "line": 1090
2026-06-21T11:53:55.9363079Z             }
2026-06-21T11:53:55.9363157Z           ]
2026-06-21T11:53:55.9363234Z         }
2026-06-21T11:53:55.9363314Z       }
2026-06-21T11:53:55.9363399Z     },
2026-06-21T11:53:55.9363477Z     {
2026-06-21T11:53:55.9363567Z       "id": "REQ-DAEMON-5",
2026-06-21T11:53:55.9364954Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T11:53:55.9365235Z       "requiredStages": [
2026-06-21T11:53:55.9365320Z         "impl",
2026-06-21T11:53:55.9365406Z         "unit"
2026-06-21T11:53:55.9365491Z       ],
2026-06-21T11:53:55.9365576Z       "stages": {
2026-06-21T11:53:55.9365656Z         "doc": {
2026-06-21T11:53:55.9365747Z           "complete": false,
2026-06-21T11:53:55.9365843Z           "evidence": []
2026-06-21T11:53:55.9365928Z         },
2026-06-21T11:53:55.9366014Z         "impl": {
2026-06-21T11:53:55.9366110Z           "complete": true,
2026-06-21T11:53:55.9366200Z           "evidence": [
2026-06-21T11:53:55.9366286Z             {
2026-06-21T11:53:55.9366420Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9366515Z               "line": 476
2026-06-21T11:53:55.9366595Z             },
2026-06-21T11:53:55.9366688Z             {
2026-06-21T11:53:55.9366815Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9366901Z               "line": 769
2026-06-21T11:53:55.9366988Z             },
2026-06-21T11:53:55.9367078Z             {
2026-06-21T11:53:55.9367182Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9367264Z               "line": 782
2026-06-21T11:53:55.9367345Z             },
2026-06-21T11:53:55.9367426Z             {
2026-06-21T11:53:55.9367531Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9367618Z               "line": 800
2026-06-21T11:53:55.9367726Z             },
2026-06-21T11:53:55.9367797Z             {
2026-06-21T11:53:55.9367908Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9367994Z               "line": 841
2026-06-21T11:53:55.9368083Z             }
2026-06-21T11:53:55.9368173Z           ]
2026-06-21T11:53:55.9368254Z         },
2026-06-21T11:53:55.9368336Z         "int": {
2026-06-21T11:53:55.9368426Z           "complete": false,
2026-06-21T11:53:55.9368526Z           "evidence": []
2026-06-21T11:53:55.9368607Z         },
2026-06-21T11:53:55.9368693Z         "unit": {
2026-06-21T11:53:55.9368788Z           "complete": true,
2026-06-21T11:53:55.9368864Z           "evidence": [
2026-06-21T11:53:55.9369037Z             {
2026-06-21T11:53:55.9369145Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9369237Z               "line": 1189
2026-06-21T11:53:55.9369318Z             },
2026-06-21T11:53:55.9369399Z             {
2026-06-21T11:53:55.9369518Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9369600Z               "line": 1213
2026-06-21T11:53:55.9369680Z             },
2026-06-21T11:53:55.9369761Z             {
2026-06-21T11:53:55.9369881Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9369971Z               "line": 1239
2026-06-21T11:53:55.9370052Z             }
2026-06-21T11:53:55.9370143Z           ]
2026-06-21T11:53:55.9370225Z         }
2026-06-21T11:53:55.9370300Z       }
2026-06-21T11:53:55.9370385Z     },
2026-06-21T11:53:55.9370465Z     {
2026-06-21T11:53:55.9370547Z       "id": "REQ-DAEMON-6",
2026-06-21T11:53:55.9372486Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T11:53:55.9372695Z       "requiredStages": [
2026-06-21T11:53:55.9372782Z         "impl",
2026-06-21T11:53:55.9372943Z         "unit"
2026-06-21T11:53:55.9373025Z       ],
2026-06-21T11:53:55.9373106Z       "stages": {
2026-06-21T11:53:55.9373191Z         "doc": {
2026-06-21T11:53:55.9373285Z           "complete": false,
2026-06-21T11:53:55.9373376Z           "evidence": []
2026-06-21T11:53:55.9373457Z         },
2026-06-21T11:53:55.9373536Z         "impl": {
2026-06-21T11:53:55.9373635Z           "complete": true,
2026-06-21T11:53:55.9373717Z           "evidence": [
2026-06-21T11:53:55.9373798Z             {
2026-06-21T11:53:55.9373921Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9374013Z               "line": 495
2026-06-21T11:53:55.9374084Z             },
2026-06-21T11:53:55.9374161Z             {
2026-06-21T11:53:55.9374279Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9374361Z               "line": 526
2026-06-21T11:53:55.9374456Z             },
2026-06-21T11:53:55.9374541Z             {
2026-06-21T11:53:55.9374656Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9374747Z               "line": 55
2026-06-21T11:53:55.9374828Z             },
2026-06-21T11:53:55.9374918Z             {
2026-06-21T11:53:55.9375034Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9375118Z               "line": 70
2026-06-21T11:53:55.9375199Z             },
2026-06-21T11:53:55.9375282Z             {
2026-06-21T11:53:55.9375381Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9375471Z               "line": 2020
2026-06-21T11:53:55.9375557Z             },
2026-06-21T11:53:55.9375640Z             {
2026-06-21T11:53:55.9375743Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9375828Z               "line": 2046
2026-06-21T11:53:55.9375909Z             }
2026-06-21T11:53:55.9375995Z           ]
2026-06-21T11:53:55.9376079Z         },
2026-06-21T11:53:55.9376164Z         "int": {
2026-06-21T11:53:55.9376245Z           "complete": false,
2026-06-21T11:53:55.9376337Z           "evidence": []
2026-06-21T11:53:55.9376417Z         },
2026-06-21T11:53:55.9376507Z         "unit": {
2026-06-21T11:53:55.9376599Z           "complete": true,
2026-06-21T11:53:55.9376689Z           "evidence": [
2026-06-21T11:53:55.9376774Z             {
2026-06-21T11:53:55.9376889Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9376970Z               "line": 288
2026-06-21T11:53:55.9377046Z             },
2026-06-21T11:53:55.9377127Z             {
2026-06-21T11:53:55.9377243Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9377337Z               "line": 299
2026-06-21T11:53:55.9377423Z             },
2026-06-21T11:53:55.9377509Z             {
2026-06-21T11:53:55.9377619Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9377709Z               "line": 325
2026-06-21T11:53:55.9377790Z             },
2026-06-21T11:53:55.9377877Z             {
2026-06-21T11:53:55.9377990Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9378091Z               "line": 351
2026-06-21T11:53:55.9378168Z             }
2026-06-21T11:53:55.9378253Z           ]
2026-06-21T11:53:55.9378338Z         }
2026-06-21T11:53:55.9378415Z       }
2026-06-21T11:53:55.9378502Z     },
2026-06-21T11:53:55.9378582Z     {
2026-06-21T11:53:55.9378681Z       "id": "REQ-DAEMON-7",
2026-06-21T11:53:55.9380150Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T11:53:55.9380245Z       "requiredStages": [
2026-06-21T11:53:55.9380446Z         "impl",
2026-06-21T11:53:55.9380531Z         "unit"
2026-06-21T11:53:55.9380698Z       ],
2026-06-21T11:53:55.9380775Z       "stages": {
2026-06-21T11:53:55.9380860Z         "doc": {
2026-06-21T11:53:55.9380954Z           "complete": false,
2026-06-21T11:53:55.9381035Z           "evidence": []
2026-06-21T11:53:55.9381116Z         },
2026-06-21T11:53:55.9381205Z         "impl": {
2026-06-21T11:53:55.9381300Z           "complete": true,
2026-06-21T11:53:55.9381386Z           "evidence": [
2026-06-21T11:53:55.9381472Z             {
2026-06-21T11:53:55.9381586Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9381681Z               "line": 545
2026-06-21T11:53:55.9381773Z             },
2026-06-21T11:53:55.9381849Z             {
2026-06-21T11:53:55.9381962Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9382049Z               "line": 610
2026-06-21T11:53:55.9382134Z             },
2026-06-21T11:53:55.9382225Z             {
2026-06-21T11:53:55.9382345Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9382436Z               "line": 89
2026-06-21T11:53:55.9382521Z             },
2026-06-21T11:53:55.9382597Z             {
2026-06-21T11:53:55.9382698Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9382788Z               "line": 1957
2026-06-21T11:53:55.9382873Z             }
2026-06-21T11:53:55.9382950Z           ]
2026-06-21T11:53:55.9383037Z         },
2026-06-21T11:53:55.9383116Z         "int": {
2026-06-21T11:53:55.9383212Z           "complete": false,
2026-06-21T11:53:55.9383299Z           "evidence": []
2026-06-21T11:53:55.9383385Z         },
2026-06-21T11:53:55.9383469Z         "unit": {
2026-06-21T11:53:55.9383561Z           "complete": true,
2026-06-21T11:53:55.9383652Z           "evidence": [
2026-06-21T11:53:55.9383737Z             {
2026-06-21T11:53:55.9383845Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9383936Z               "line": 314
2026-06-21T11:53:55.9384026Z             },
2026-06-21T11:53:55.9384105Z             {
2026-06-21T11:53:55.9384219Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9384301Z               "line": 8102
2026-06-21T11:53:55.9384388Z             }
2026-06-21T11:53:55.9384472Z           ]
2026-06-21T11:53:55.9384548Z         }
2026-06-21T11:53:55.9384631Z       }
2026-06-21T11:53:55.9384712Z     },
2026-06-21T11:53:55.9384786Z     {
2026-06-21T11:53:55.9384883Z       "id": "REQ-DAEMON-8",
2026-06-21T11:53:55.9385837Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T11:53:55.9385942Z       "requiredStages": [
2026-06-21T11:53:55.9386021Z         "impl",
2026-06-21T11:53:55.9386108Z         "unit"
2026-06-21T11:53:55.9386209Z       ],
2026-06-21T11:53:55.9386294Z       "stages": {
2026-06-21T11:53:55.9386384Z         "doc": {
2026-06-21T11:53:55.9386488Z           "complete": false,
2026-06-21T11:53:55.9386579Z           "evidence": []
2026-06-21T11:53:55.9386657Z         },
2026-06-21T11:53:55.9386748Z         "impl": {
2026-06-21T11:53:55.9386834Z           "complete": true,
2026-06-21T11:53:55.9386921Z           "evidence": [
2026-06-21T11:53:55.9387010Z             {
2026-06-21T11:53:55.9387130Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9387211Z               "line": 445
2026-06-21T11:53:55.9387292Z             },
2026-06-21T11:53:55.9387377Z             {
2026-06-21T11:53:55.9387493Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9387583Z               "line": 56
2026-06-21T11:53:55.9387663Z             }
2026-06-21T11:53:55.9387745Z           ]
2026-06-21T11:53:55.9387827Z         },
2026-06-21T11:53:55.9387907Z         "int": {
2026-06-21T11:53:55.9388079Z           "complete": false,
2026-06-21T11:53:55.9388174Z           "evidence": []
2026-06-21T11:53:55.9388312Z         },
2026-06-21T11:53:55.9388389Z         "unit": {
2026-06-21T11:53:55.9388480Z           "complete": true,
2026-06-21T11:53:55.9388574Z           "evidence": [
2026-06-21T11:53:55.9388656Z             {
2026-06-21T11:53:55.9388772Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9388855Z               "line": 288
2026-06-21T11:53:55.9389014Z             },
2026-06-21T11:53:55.9389101Z             {
2026-06-21T11:53:55.9389217Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T11:53:55.9389312Z               "line": 325
2026-06-21T11:53:55.9389384Z             }
2026-06-21T11:53:55.9389466Z           ]
2026-06-21T11:53:55.9389546Z         }
2026-06-21T11:53:55.9389626Z       }
2026-06-21T11:53:55.9389709Z     },
2026-06-21T11:53:55.9389790Z     {
2026-06-21T11:53:55.9389880Z       "id": "REQ-DAEMON-9",
2026-06-21T11:53:55.9392251Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T11:53:55.9392357Z       "requiredStages": [
2026-06-21T11:53:55.9392428Z         "impl",
2026-06-21T11:53:55.9392508Z         "unit"
2026-06-21T11:53:55.9392591Z       ],
2026-06-21T11:53:55.9392686Z       "stages": {
2026-06-21T11:53:55.9392766Z         "doc": {
2026-06-21T11:53:55.9392862Z           "complete": false,
2026-06-21T11:53:55.9392958Z           "evidence": []
2026-06-21T11:53:55.9393048Z         },
2026-06-21T11:53:55.9393128Z         "impl": {
2026-06-21T11:53:55.9393220Z           "complete": true,
2026-06-21T11:53:55.9393301Z           "evidence": [
2026-06-21T11:53:55.9393386Z             {
2026-06-21T11:53:55.9393515Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9393602Z               "line": 276
2026-06-21T11:53:55.9393691Z             },
2026-06-21T11:53:55.9393772Z             {
2026-06-21T11:53:55.9393893Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9393977Z               "line": 1279
2026-06-21T11:53:55.9394064Z             },
2026-06-21T11:53:55.9394150Z             {
2026-06-21T11:53:55.9394255Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9394339Z               "line": 197
2026-06-21T11:53:55.9394439Z             },
2026-06-21T11:53:55.9394520Z             {
2026-06-21T11:53:55.9394637Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9394727Z               "line": 344
2026-06-21T11:53:55.9394818Z             },
2026-06-21T11:53:55.9394904Z             {
2026-06-21T11:53:55.9395008Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9395099Z               "line": 381
2026-06-21T11:53:55.9395181Z             },
2026-06-21T11:53:55.9395267Z             {
2026-06-21T11:53:55.9395370Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9395462Z               "line": 2075
2026-06-21T11:53:55.9395548Z             }
2026-06-21T11:53:55.9395629Z           ]
2026-06-21T11:53:55.9395719Z         },
2026-06-21T11:53:55.9395791Z         "int": {
2026-06-21T11:53:55.9395891Z           "complete": false,
2026-06-21T11:53:55.9395972Z           "evidence": []
2026-06-21T11:53:55.9396057Z         },
2026-06-21T11:53:55.9396238Z         "unit": {
2026-06-21T11:53:55.9396329Z           "complete": true,
2026-06-21T11:53:55.9396421Z           "evidence": [
2026-06-21T11:53:55.9396581Z             {
2026-06-21T11:53:55.9396707Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9396798Z               "line": 1158
2026-06-21T11:53:55.9396887Z             },
2026-06-21T11:53:55.9396972Z             {
2026-06-21T11:53:55.9397077Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9397171Z               "line": 10580
2026-06-21T11:53:55.9397256Z             }
2026-06-21T11:53:55.9397341Z           ]
2026-06-21T11:53:55.9397428Z         }
2026-06-21T11:53:55.9397510Z       }
2026-06-21T11:53:55.9397594Z     },
2026-06-21T11:53:55.9397675Z     {
2026-06-21T11:53:55.9397767Z       "id": "REQ-DOCS-1",
2026-06-21T11:53:55.9397961Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T11:53:55.9398058Z       "requiredStages": [
2026-06-21T11:53:55.9398148Z         "doc",
2026-06-21T11:53:55.9398238Z         "impl"
2026-06-21T11:53:55.9398325Z       ],
2026-06-21T11:53:55.9398420Z       "stages": {
2026-06-21T11:53:55.9398505Z         "doc": {
2026-06-21T11:53:55.9398596Z           "complete": true,
2026-06-21T11:53:55.9398688Z           "evidence": [
2026-06-21T11:53:55.9398772Z             {
2026-06-21T11:53:55.9398886Z               "path": "docs-site/src/index.md",
2026-06-21T11:53:55.9399040Z               "line": 50
2026-06-21T11:53:55.9399302Z             }
2026-06-21T11:53:55.9399473Z           ]
2026-06-21T11:53:55.9399559Z         },
2026-06-21T11:53:55.9399656Z         "impl": {
2026-06-21T11:53:55.9399754Z           "complete": true,
2026-06-21T11:53:55.9399849Z           "evidence": [
2026-06-21T11:53:55.9399934Z             {
2026-06-21T11:53:55.9400078Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T11:53:55.9400173Z               "line": 12
2026-06-21T11:53:55.9400254Z             },
2026-06-21T11:53:55.9400341Z             {
2026-06-21T11:53:55.9400483Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:55.9400579Z               "line": 14
2026-06-21T11:53:55.9400669Z             }
2026-06-21T11:53:55.9400736Z           ]
2026-06-21T11:53:55.9400821Z         },
2026-06-21T11:53:55.9400898Z         "int": {
2026-06-21T11:53:55.9401003Z           "complete": false,
2026-06-21T11:53:55.9401088Z           "evidence": []
2026-06-21T11:53:55.9401174Z         },
2026-06-21T11:53:55.9401261Z         "unit": {
2026-06-21T11:53:55.9401346Z           "complete": false,
2026-06-21T11:53:55.9401437Z           "evidence": []
2026-06-21T11:53:55.9401518Z         }
2026-06-21T11:53:55.9401604Z       }
2026-06-21T11:53:55.9401684Z     },
2026-06-21T11:53:55.9401770Z     {
2026-06-21T11:53:55.9401862Z       "id": "REQ-DOCS-2",
2026-06-21T11:53:55.9402032Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T11:53:55.9402122Z       "requiredStages": [
2026-06-21T11:53:55.9402213Z         "doc",
2026-06-21T11:53:55.9402307Z         "int"
2026-06-21T11:53:55.9402382Z       ],
2026-06-21T11:53:55.9402472Z       "stages": {
2026-06-21T11:53:55.9405727Z         "doc": {
2026-06-21T11:53:55.9405865Z           "complete": true,
2026-06-21T11:53:55.9405959Z           "evidence": [
2026-06-21T11:53:55.9406046Z             {
2026-06-21T11:53:55.9406236Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T11:53:55.9406322Z               "line": 3
2026-06-21T11:53:55.9406409Z             },
2026-06-21T11:53:55.9406499Z             {
2026-06-21T11:53:55.9406622Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T11:53:55.9406714Z               "line": 3
2026-06-21T11:53:55.9406798Z             },
2026-06-21T11:53:55.9406870Z             {
2026-06-21T11:53:55.9407005Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T11:53:55.9407086Z               "line": 3
2026-06-21T11:53:55.9407171Z             }
2026-06-21T11:53:55.9407248Z           ]
2026-06-21T11:53:55.9407528Z         },
2026-06-21T11:53:55.9407613Z         "impl": {
2026-06-21T11:53:55.9407708Z           "complete": false,
2026-06-21T11:53:55.9407906Z           "evidence": []
2026-06-21T11:53:55.9407988Z         },
2026-06-21T11:53:55.9408070Z         "int": {
2026-06-21T11:53:55.9408159Z           "complete": true,
2026-06-21T11:53:55.9408250Z           "evidence": [
2026-06-21T11:53:55.9408332Z             {
2026-06-21T11:53:55.9408464Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T11:53:55.9408550Z               "line": 14
2026-06-21T11:53:55.9408637Z             }
2026-06-21T11:53:55.9408718Z           ]
2026-06-21T11:53:55.9408788Z         },
2026-06-21T11:53:55.9408875Z         "unit": {
2026-06-21T11:53:55.9409046Z           "complete": false,
2026-06-21T11:53:55.9409151Z           "evidence": []
2026-06-21T11:53:55.9409228Z         }
2026-06-21T11:53:55.9409318Z       }
2026-06-21T11:53:55.9409422Z     },
2026-06-21T11:53:55.9409504Z     {
2026-06-21T11:53:55.9409610Z       "id": "REQ-DOCS-3",
2026-06-21T11:53:55.9409887Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T11:53:55.9409994Z       "requiredStages": [
2026-06-21T11:53:55.9410071Z         "doc"
2026-06-21T11:53:55.9410159Z       ],
2026-06-21T11:53:55.9410245Z       "stages": {
2026-06-21T11:53:55.9410328Z         "doc": {
2026-06-21T11:53:55.9410427Z           "complete": true,
2026-06-21T11:53:55.9410514Z           "evidence": [
2026-06-21T11:53:55.9410591Z             {
2026-06-21T11:53:55.9410704Z               "path": "docs-site/src/index.md",
2026-06-21T11:53:55.9410795Z               "line": 42
2026-06-21T11:53:55.9410877Z             }
2026-06-21T11:53:55.9410953Z           ]
2026-06-21T11:53:55.9411038Z         },
2026-06-21T11:53:55.9411120Z         "impl": {
2026-06-21T11:53:55.9411215Z           "complete": false,
2026-06-21T11:53:55.9411301Z           "evidence": []
2026-06-21T11:53:55.9411391Z         },
2026-06-21T11:53:55.9411473Z         "int": {
2026-06-21T11:53:55.9411568Z           "complete": false,
2026-06-21T11:53:55.9411662Z           "evidence": []
2026-06-21T11:53:55.9411754Z         },
2026-06-21T11:53:55.9411836Z         "unit": {
2026-06-21T11:53:55.9411925Z           "complete": false,
2026-06-21T11:53:55.9412025Z           "evidence": []
2026-06-21T11:53:55.9412108Z         }
2026-06-21T11:53:55.9412183Z       }
2026-06-21T11:53:55.9412268Z     },
2026-06-21T11:53:55.9412350Z     {
2026-06-21T11:53:55.9412447Z       "id": "REQ-DOCS-4",
2026-06-21T11:53:55.9412644Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T11:53:55.9412744Z       "requiredStages": [
2026-06-21T11:53:55.9412829Z         "doc",
2026-06-21T11:53:55.9412914Z         "impl",
2026-06-21T11:53:55.9413004Z         "unit"
2026-06-21T11:53:55.9413076Z       ],
2026-06-21T11:53:55.9413158Z       "stages": {
2026-06-21T11:53:55.9413238Z         "doc": {
2026-06-21T11:53:55.9413338Z           "complete": true,
2026-06-21T11:53:55.9413424Z           "evidence": [
2026-06-21T11:53:55.9413505Z             {
2026-06-21T11:53:55.9413619Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T11:53:55.9413706Z               "line": 35
2026-06-21T11:53:55.9413791Z             }
2026-06-21T11:53:55.9413862Z           ]
2026-06-21T11:53:55.9413943Z         },
2026-06-21T11:53:55.9414031Z         "impl": {
2026-06-21T11:53:55.9414111Z           "complete": true,
2026-06-21T11:53:55.9414206Z           "evidence": [
2026-06-21T11:53:55.9414287Z             {
2026-06-21T11:53:55.9414411Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:55.9414497Z               "line": 746
2026-06-21T11:53:55.9414578Z             },
2026-06-21T11:53:55.9414650Z             {
2026-06-21T11:53:55.9414768Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:55.9414855Z               "line": 15
2026-06-21T11:53:55.9414936Z             }
2026-06-21T11:53:55.9415022Z           ]
2026-06-21T11:53:55.9415093Z         },
2026-06-21T11:53:55.9415275Z         "int": {
2026-06-21T11:53:55.9415366Z           "complete": false,
2026-06-21T11:53:55.9415549Z           "evidence": []
2026-06-21T11:53:55.9415626Z         },
2026-06-21T11:53:55.9415706Z         "unit": {
2026-06-21T11:53:55.9415810Z           "complete": true,
2026-06-21T11:53:55.9415890Z           "evidence": [
2026-06-21T11:53:55.9415972Z             {
2026-06-21T11:53:55.9416096Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:55.9416181Z               "line": 1682
2026-06-21T11:53:55.9416268Z             }
2026-06-21T11:53:55.9416349Z           ]
2026-06-21T11:53:55.9416434Z         }
2026-06-21T11:53:55.9416510Z       }
2026-06-21T11:53:55.9416592Z     },
2026-06-21T11:53:55.9416673Z     {
2026-06-21T11:53:55.9416772Z       "id": "REQ-DOCS-5",
2026-06-21T11:53:55.9416974Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T11:53:55.9417069Z       "requiredStages": [
2026-06-21T11:53:55.9417149Z         "impl",
2026-06-21T11:53:55.9417241Z         "int"
2026-06-21T11:53:55.9417326Z       ],
2026-06-21T11:53:55.9417407Z       "stages": {
2026-06-21T11:53:55.9417498Z         "doc": {
2026-06-21T11:53:55.9417594Z           "complete": false,
2026-06-21T11:53:55.9417678Z           "evidence": []
2026-06-21T11:53:55.9417764Z         },
2026-06-21T11:53:55.9417847Z         "impl": {
2026-06-21T11:53:55.9417937Z           "complete": true,
2026-06-21T11:53:55.9418026Z           "evidence": [
2026-06-21T11:53:55.9418111Z             {
2026-06-21T11:53:55.9418235Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:55.9418324Z               "line": 747
2026-06-21T11:53:55.9418399Z             },
2026-06-21T11:53:55.9418466Z             {
2026-06-21T11:53:55.9418577Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:55.9418663Z               "line": 113
2026-06-21T11:53:55.9418748Z             }
2026-06-21T11:53:55.9418829Z           ]
2026-06-21T11:53:55.9418911Z         },
2026-06-21T11:53:55.9419096Z         "int": {
2026-06-21T11:53:55.9419183Z           "complete": true,
2026-06-21T11:53:55.9419278Z           "evidence": [
2026-06-21T11:53:55.9419358Z             {
2026-06-21T11:53:55.9419469Z               "path": ".github/workflows/ci.yml",
2026-06-21T11:53:55.9419564Z               "line": 211
2026-06-21T11:53:55.9419640Z             },
2026-06-21T11:53:55.9419721Z             {
2026-06-21T11:53:55.9419827Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:55.9419921Z               "line": 1719
2026-06-21T11:53:55.9420002Z             }
2026-06-21T11:53:55.9420089Z           ]
2026-06-21T11:53:55.9420165Z         },
2026-06-21T11:53:55.9420249Z         "unit": {
2026-06-21T11:53:55.9420345Z           "complete": false,
2026-06-21T11:53:55.9420423Z           "evidence": []
2026-06-21T11:53:55.9420508Z         }
2026-06-21T11:53:55.9420578Z       }
2026-06-21T11:53:55.9420660Z     },
2026-06-21T11:53:55.9420747Z     {
2026-06-21T11:53:55.9420842Z       "id": "REQ-DOCS-6",
2026-06-21T11:53:55.9421166Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T11:53:55.9421259Z       "requiredStages": [
2026-06-21T11:53:55.9421345Z         "impl",
2026-06-21T11:53:55.9421433Z         "unit",
2026-06-21T11:53:55.9421514Z         "int"
2026-06-21T11:53:55.9421598Z       ],
2026-06-21T11:53:55.9421685Z       "stages": {
2026-06-21T11:53:55.9421775Z         "doc": {
2026-06-21T11:53:55.9421866Z           "complete": true,
2026-06-21T11:53:55.9421961Z           "evidence": [
2026-06-21T11:53:55.9422038Z             {
2026-06-21T11:53:55.9422176Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T11:53:55.9422266Z               "line": 4
2026-06-21T11:53:55.9422353Z             }
2026-06-21T11:53:55.9422433Z           ]
2026-06-21T11:53:55.9422519Z         },
2026-06-21T11:53:55.9422604Z         "impl": {
2026-06-21T11:53:55.9422692Z           "complete": true,
2026-06-21T11:53:55.9422881Z           "evidence": [
2026-06-21T11:53:55.9422958Z             {
2026-06-21T11:53:55.9423152Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9423242Z               "line": 5240
2026-06-21T11:53:55.9423324Z             }
2026-06-21T11:53:55.9423403Z           ]
2026-06-21T11:53:55.9423474Z         },
2026-06-21T11:53:55.9423564Z         "int": {
2026-06-21T11:53:55.9423655Z           "complete": true,
2026-06-21T11:53:55.9423742Z           "evidence": [
2026-06-21T11:53:55.9423826Z             {
2026-06-21T11:53:55.9423951Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T11:53:55.9424042Z               "line": 39
2026-06-21T11:53:55.9424122Z             }
2026-06-21T11:53:55.9424207Z           ]
2026-06-21T11:53:55.9424290Z         },
2026-06-21T11:53:55.9424371Z         "unit": {
2026-06-21T11:53:55.9424451Z           "complete": true,
2026-06-21T11:53:55.9424537Z           "evidence": [
2026-06-21T11:53:55.9424624Z             {
2026-06-21T11:53:55.9424728Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9424813Z               "line": 10742
2026-06-21T11:53:55.9424905Z             }
2026-06-21T11:53:55.9424990Z           ]
2026-06-21T11:53:55.9425066Z         }
2026-06-21T11:53:55.9425143Z       }
2026-06-21T11:53:55.9425225Z     },
2026-06-21T11:53:55.9425305Z     {
2026-06-21T11:53:55.9425405Z       "id": "REQ-ELEVATE-1",
2026-06-21T11:53:55.9428553Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T11:53:55.9428686Z       "requiredStages": [
2026-06-21T11:53:55.9428772Z         "doc",
2026-06-21T11:53:55.9428852Z         "impl",
2026-06-21T11:53:55.9428936Z         "unit"
2026-06-21T11:53:55.9429113Z       ],
2026-06-21T11:53:55.9429209Z       "stages": {
2026-06-21T11:53:55.9429288Z         "doc": {
2026-06-21T11:53:55.9429385Z           "complete": true,
2026-06-21T11:53:55.9429471Z           "evidence": [
2026-06-21T11:53:55.9429556Z             {
2026-06-21T11:53:55.9429656Z               "path": "CONTEXT.md",
2026-06-21T11:53:55.9429752Z               "line": 687
2026-06-21T11:53:55.9429843Z             }
2026-06-21T11:53:55.9429918Z           ]
2026-06-21T11:53:55.9430010Z         },
2026-06-21T11:53:55.9430095Z         "impl": {
2026-06-21T11:53:55.9430181Z           "complete": true,
2026-06-21T11:53:55.9430266Z           "evidence": [
2026-06-21T11:53:55.9430353Z             {
2026-06-21T11:53:55.9430457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9430539Z               "line": 3572
2026-06-21T11:53:55.9430620Z             },
2026-06-21T11:53:55.9430706Z             {
2026-06-21T11:53:55.9430809Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9430896Z               "line": 3617
2026-06-21T11:53:55.9430979Z             },
2026-06-21T11:53:55.9431059Z             {
2026-06-21T11:53:55.9431153Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9431245Z               "line": 3679
2026-06-21T11:53:55.9431321Z             },
2026-06-21T11:53:55.9431411Z             {
2026-06-21T11:53:55.9431625Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:55.9431716Z               "line": 92
2026-06-21T11:53:55.9431886Z             },
2026-06-21T11:53:55.9431968Z             {
2026-06-21T11:53:55.9432088Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:55.9432163Z               "line": 148
2026-06-21T11:53:55.9432245Z             }
2026-06-21T11:53:55.9432326Z           ]
2026-06-21T11:53:55.9432407Z         },
2026-06-21T11:53:55.9432492Z         "int": {
2026-06-21T11:53:55.9432583Z           "complete": false,
2026-06-21T11:53:55.9432678Z           "evidence": []
2026-06-21T11:53:55.9432764Z         },
2026-06-21T11:53:55.9432845Z         "unit": {
2026-06-21T11:53:55.9432932Z           "complete": true,
2026-06-21T11:53:55.9433026Z           "evidence": [
2026-06-21T11:53:55.9433112Z             {
2026-06-21T11:53:55.9433213Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:55.9433313Z               "line": 442
2026-06-21T11:53:55.9433394Z             },
2026-06-21T11:53:55.9433480Z             {
2026-06-21T11:53:55.9433576Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:55.9433665Z               "line": 460
2026-06-21T11:53:55.9433750Z             }
2026-06-21T11:53:55.9433826Z           ]
2026-06-21T11:53:55.9433917Z         }
2026-06-21T11:53:55.9433996Z       }
2026-06-21T11:53:55.9434077Z     },
2026-06-21T11:53:55.9434158Z     {
2026-06-21T11:53:55.9434273Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T11:53:55.9436061Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T11:53:55.9436171Z       "requiredStages": [
2026-06-21T11:53:55.9436255Z         "doc",
2026-06-21T11:53:55.9436337Z         "impl",
2026-06-21T11:53:55.9436419Z         "unit"
2026-06-21T11:53:55.9436504Z       ],
2026-06-21T11:53:55.9436584Z       "stages": {
2026-06-21T11:53:55.9436669Z         "doc": {
2026-06-21T11:53:55.9436760Z           "complete": true,
2026-06-21T11:53:55.9450147Z           "evidence": [
2026-06-21T11:53:55.9450243Z             {
2026-06-21T11:53:55.9450347Z               "path": "CONTEXT.md",
2026-06-21T11:53:55.9450432Z               "line": 711
2026-06-21T11:53:55.9450515Z             }
2026-06-21T11:53:55.9450605Z           ]
2026-06-21T11:53:55.9450686Z         },
2026-06-21T11:53:55.9450771Z         "impl": {
2026-06-21T11:53:55.9450872Z           "complete": true,
2026-06-21T11:53:55.9450948Z           "evidence": [
2026-06-21T11:53:55.9451053Z             {
2026-06-21T11:53:55.9451164Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9451273Z               "line": 1721
2026-06-21T11:53:55.9451353Z             },
2026-06-21T11:53:55.9451435Z             {
2026-06-21T11:53:55.9451549Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9451630Z               "line": 3125
2026-06-21T11:53:55.9451711Z             },
2026-06-21T11:53:55.9451794Z             {
2026-06-21T11:53:55.9451902Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9451988Z               "line": 3134
2026-06-21T11:53:55.9452069Z             }
2026-06-21T11:53:55.9452151Z           ]
2026-06-21T11:53:55.9452226Z         },
2026-06-21T11:53:55.9452307Z         "int": {
2026-06-21T11:53:55.9452394Z           "complete": false,
2026-06-21T11:53:55.9452489Z           "evidence": []
2026-06-21T11:53:55.9452564Z         },
2026-06-21T11:53:55.9452649Z         "unit": {
2026-06-21T11:53:55.9452898Z           "complete": true,
2026-06-21T11:53:55.9452983Z           "evidence": [
2026-06-21T11:53:55.9453070Z             {
2026-06-21T11:53:55.9453264Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9453355Z               "line": 7950
2026-06-21T11:53:55.9453437Z             },
2026-06-21T11:53:55.9453518Z             {
2026-06-21T11:53:55.9453621Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9453704Z               "line": 7991
2026-06-21T11:53:55.9453799Z             }
2026-06-21T11:53:55.9453885Z           ]
2026-06-21T11:53:55.9453970Z         }
2026-06-21T11:53:55.9454047Z       }
2026-06-21T11:53:55.9454133Z     },
2026-06-21T11:53:55.9454209Z     {
2026-06-21T11:53:55.9454309Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T11:53:55.9459337Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T11:53:55.9459496Z       "requiredStages": [
2026-06-21T11:53:55.9459575Z         "doc",
2026-06-21T11:53:55.9459661Z         "impl",
2026-06-21T11:53:55.9459748Z         "unit",
2026-06-21T11:53:55.9459839Z         "int"
2026-06-21T11:53:55.9459909Z       ],
2026-06-21T11:53:55.9460000Z       "stages": {
2026-06-21T11:53:55.9460087Z         "doc": {
2026-06-21T11:53:55.9460182Z           "complete": true,
2026-06-21T11:53:55.9460262Z           "evidence": [
2026-06-21T11:53:55.9460346Z             {
2026-06-21T11:53:55.9460447Z               "path": "CONTEXT.md",
2026-06-21T11:53:55.9460536Z               "line": 163
2026-06-21T11:53:55.9460617Z             }
2026-06-21T11:53:55.9460702Z           ]
2026-06-21T11:53:55.9460788Z         },
2026-06-21T11:53:55.9460870Z         "impl": {
2026-06-21T11:53:55.9460964Z           "complete": true,
2026-06-21T11:53:55.9461050Z           "evidence": [
2026-06-21T11:53:55.9461132Z             {
2026-06-21T11:53:55.9461260Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:55.9461351Z               "line": 105
2026-06-21T11:53:55.9461432Z             },
2026-06-21T11:53:55.9461523Z             {
2026-06-21T11:53:55.9461631Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9461724Z               "line": 7219
2026-06-21T11:53:55.9461804Z             }
2026-06-21T11:53:55.9461890Z           ]
2026-06-21T11:53:55.9461971Z         },
2026-06-21T11:53:55.9462053Z         "int": {
2026-06-21T11:53:55.9462147Z           "complete": true,
2026-06-21T11:53:55.9462238Z           "evidence": [
2026-06-21T11:53:55.9462315Z             {
2026-06-21T11:53:55.9462410Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9462610Z               "line": 7384
2026-06-21T11:53:55.9462687Z             }
2026-06-21T11:53:55.9462772Z           ]
2026-06-21T11:53:55.9462940Z         },
2026-06-21T11:53:55.9463026Z         "unit": {
2026-06-21T11:53:55.9463119Z           "complete": true,
2026-06-21T11:53:55.9463204Z           "evidence": [
2026-06-21T11:53:55.9463285Z             {
2026-06-21T11:53:55.9463387Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9463472Z               "line": 7355
2026-06-21T11:53:55.9463557Z             }
2026-06-21T11:53:55.9463644Z           ]
2026-06-21T11:53:55.9463730Z         }
2026-06-21T11:53:55.9463801Z       }
2026-06-21T11:53:55.9463886Z     },
2026-06-21T11:53:55.9463964Z     {
2026-06-21T11:53:55.9464078Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T11:53:55.9465379Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T11:53:55.9465497Z       "requiredStages": [
2026-06-21T11:53:55.9465578Z         "impl",
2026-06-21T11:53:55.9465663Z         "unit"
2026-06-21T11:53:55.9465747Z       ],
2026-06-21T11:53:55.9465833Z       "stages": {
2026-06-21T11:53:55.9465915Z         "doc": {
2026-06-21T11:53:55.9466015Z           "complete": false,
2026-06-21T11:53:55.9466095Z           "evidence": []
2026-06-21T11:53:55.9466182Z         },
2026-06-21T11:53:55.9466268Z         "impl": {
2026-06-21T11:53:55.9466353Z           "complete": true,
2026-06-21T11:53:55.9466443Z           "evidence": [
2026-06-21T11:53:55.9466530Z             {
2026-06-21T11:53:55.9466640Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9466724Z               "line": 3165
2026-06-21T11:53:55.9466821Z             }
2026-06-21T11:53:55.9466893Z           ]
2026-06-21T11:53:55.9466978Z         },
2026-06-21T11:53:55.9467068Z         "int": {
2026-06-21T11:53:55.9467155Z           "complete": false,
2026-06-21T11:53:55.9467240Z           "evidence": []
2026-06-21T11:53:55.9467326Z         },
2026-06-21T11:53:55.9467416Z         "unit": {
2026-06-21T11:53:55.9467508Z           "complete": true,
2026-06-21T11:53:55.9467592Z           "evidence": [
2026-06-21T11:53:55.9467678Z             {
2026-06-21T11:53:55.9467785Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9467870Z               "line": 7331
2026-06-21T11:53:55.9467940Z             }
2026-06-21T11:53:55.9468022Z           ]
2026-06-21T11:53:55.9468095Z         }
2026-06-21T11:53:55.9468181Z       }
2026-06-21T11:53:55.9468250Z     },
2026-06-21T11:53:55.9468331Z     {
2026-06-21T11:53:55.9468422Z       "id": "REQ-EP-1",
2026-06-21T11:53:55.9468554Z       "title": "Day-one endpoint types; open type system",
2026-06-21T11:53:55.9468657Z       "requiredStages": [
2026-06-21T11:53:55.9468730Z         "impl",
2026-06-21T11:53:55.9468825Z         "unit"
2026-06-21T11:53:55.9468910Z       ],
2026-06-21T11:53:55.9469073Z       "stages": {
2026-06-21T11:53:55.9469158Z         "doc": {
2026-06-21T11:53:55.9469239Z           "complete": false,
2026-06-21T11:53:55.9469329Z           "evidence": []
2026-06-21T11:53:55.9469412Z         },
2026-06-21T11:53:55.9469497Z         "impl": {
2026-06-21T11:53:55.9469582Z           "complete": true,
2026-06-21T11:53:55.9469669Z           "evidence": [
2026-06-21T11:53:55.9469741Z             {
2026-06-21T11:53:55.9469864Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9469959Z               "line": 77
2026-06-21T11:53:55.9470042Z             },
2026-06-21T11:53:55.9470126Z             {
2026-06-21T11:53:55.9470236Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9470323Z               "line": 94
2026-06-21T11:53:55.9470502Z             }
2026-06-21T11:53:55.9470584Z           ]
2026-06-21T11:53:55.9470661Z         },
2026-06-21T11:53:55.9470747Z         "int": {
2026-06-21T11:53:55.9470930Z           "complete": false,
2026-06-21T11:53:55.9471007Z           "evidence": []
2026-06-21T11:53:55.9471092Z         },
2026-06-21T11:53:55.9471172Z         "unit": {
2026-06-21T11:53:55.9471252Z           "complete": true,
2026-06-21T11:53:55.9471344Z           "evidence": [
2026-06-21T11:53:55.9471421Z             {
2026-06-21T11:53:55.9471548Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9471635Z               "line": 161
2026-06-21T11:53:55.9471725Z             },
2026-06-21T11:53:55.9471810Z             {
2026-06-21T11:53:55.9471911Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9471997Z               "line": 178
2026-06-21T11:53:55.9472078Z             }
2026-06-21T11:53:55.9472163Z           ]
2026-06-21T11:53:55.9472240Z         }
2026-06-21T11:53:55.9472326Z       }
2026-06-21T11:53:55.9472426Z     },
2026-06-21T11:53:55.9472507Z     {
2026-06-21T11:53:55.9472599Z       "id": "REQ-EP-2",
2026-06-21T11:53:55.9472760Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T11:53:55.9472850Z       "requiredStages": [
2026-06-21T11:53:55.9472938Z         "impl",
2026-06-21T11:53:55.9473027Z         "unit"
2026-06-21T11:53:55.9473108Z       ],
2026-06-21T11:53:55.9473185Z       "stages": {
2026-06-21T11:53:55.9473271Z         "doc": {
2026-06-21T11:53:55.9473360Z           "complete": false,
2026-06-21T11:53:55.9473451Z           "evidence": []
2026-06-21T11:53:55.9473528Z         },
2026-06-21T11:53:55.9473614Z         "impl": {
2026-06-21T11:53:55.9473713Z           "complete": true,
2026-06-21T11:53:55.9473793Z           "evidence": [
2026-06-21T11:53:55.9473880Z             {
2026-06-21T11:53:55.9473994Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9474089Z               "line": 114
2026-06-21T11:53:55.9474170Z             },
2026-06-21T11:53:55.9474257Z             {
2026-06-21T11:53:55.9474370Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9474466Z               "line": 131
2026-06-21T11:53:55.9474547Z             },
2026-06-21T11:53:55.9474628Z             {
2026-06-21T11:53:55.9474746Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9474834Z               "line": 138
2026-06-21T11:53:55.9474919Z             }
2026-06-21T11:53:55.9475014Z           ]
2026-06-21T11:53:55.9475095Z         },
2026-06-21T11:53:55.9475177Z         "int": {
2026-06-21T11:53:55.9475267Z           "complete": false,
2026-06-21T11:53:55.9475367Z           "evidence": []
2026-06-21T11:53:55.9475449Z         },
2026-06-21T11:53:55.9475530Z         "unit": {
2026-06-21T11:53:55.9475619Z           "complete": true,
2026-06-21T11:53:55.9475696Z           "evidence": [
2026-06-21T11:53:55.9475773Z             {
2026-06-21T11:53:55.9475891Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9475986Z               "line": 190
2026-06-21T11:53:55.9476066Z             },
2026-06-21T11:53:55.9476152Z             {
2026-06-21T11:53:55.9476279Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9476365Z               "line": 208
2026-06-21T11:53:55.9476451Z             },
2026-06-21T11:53:55.9476528Z             {
2026-06-21T11:53:55.9476636Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T11:53:55.9476722Z               "line": 221
2026-06-21T11:53:55.9476805Z             }
2026-06-21T11:53:55.9476890Z           ]
2026-06-21T11:53:55.9476970Z         }
2026-06-21T11:53:55.9477052Z       }
2026-06-21T11:53:55.9477134Z     },
2026-06-21T11:53:55.9477219Z     {
2026-06-21T11:53:55.9477308Z       "id": "REQ-EP-3",
2026-06-21T11:53:55.9477495Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T11:53:55.9477595Z       "requiredStages": [
2026-06-21T11:53:55.9477686Z         "impl",
2026-06-21T11:53:55.9477848Z         "unit"
2026-06-21T11:53:55.9477928Z       ],
2026-06-21T11:53:55.9478016Z       "stages": {
2026-06-21T11:53:55.9478176Z         "doc": {
2026-06-21T11:53:55.9478262Z           "complete": false,
2026-06-21T11:53:55.9478354Z           "evidence": []
2026-06-21T11:53:55.9478440Z         },
2026-06-21T11:53:55.9478535Z         "impl": {
2026-06-21T11:53:55.9478616Z           "complete": true,
2026-06-21T11:53:55.9478712Z           "evidence": [
2026-06-21T11:53:55.9478783Z             {
2026-06-21T11:53:55.9478905Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9479076Z               "line": 31
2026-06-21T11:53:55.9479156Z             },
2026-06-21T11:53:55.9479237Z             {
2026-06-21T11:53:55.9479352Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9479433Z               "line": 49
2026-06-21T11:53:55.9479522Z             }
2026-06-21T11:53:55.9479599Z           ]
2026-06-21T11:53:55.9479681Z         },
2026-06-21T11:53:55.9479762Z         "int": {
2026-06-21T11:53:55.9479856Z           "complete": false,
2026-06-21T11:53:55.9479943Z           "evidence": []
2026-06-21T11:53:55.9480024Z         },
2026-06-21T11:53:55.9480110Z         "unit": {
2026-06-21T11:53:55.9480200Z           "complete": true,
2026-06-21T11:53:55.9480291Z           "evidence": [
2026-06-21T11:53:55.9480367Z             {
2026-06-21T11:53:55.9480486Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9480573Z               "line": 156
2026-06-21T11:53:55.9480659Z             },
2026-06-21T11:53:55.9480743Z             {
2026-06-21T11:53:55.9480858Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9480945Z               "line": 164
2026-06-21T11:53:55.9481025Z             },
2026-06-21T11:53:55.9481106Z             {
2026-06-21T11:53:55.9481208Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9481293Z               "line": 177
2026-06-21T11:53:55.9481377Z             },
2026-06-21T11:53:55.9481467Z             {
2026-06-21T11:53:55.9481582Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9481666Z               "line": 200
2026-06-21T11:53:55.9481756Z             },
2026-06-21T11:53:55.9481842Z             {
2026-06-21T11:53:55.9481962Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9482047Z               "line": 216
2026-06-21T11:53:55.9482132Z             },
2026-06-21T11:53:55.9482215Z             {
2026-06-21T11:53:55.9482324Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T11:53:55.9482423Z               "line": 233
2026-06-21T11:53:55.9482500Z             }
2026-06-21T11:53:55.9482576Z           ]
2026-06-21T11:53:55.9482657Z         }
2026-06-21T11:53:55.9482738Z       }
2026-06-21T11:53:55.9482825Z     },
2026-06-21T11:53:55.9482900Z     {
2026-06-21T11:53:55.9482986Z       "id": "REQ-EP-4",
2026-06-21T11:53:55.9483134Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T11:53:55.9483244Z       "requiredStages": [
2026-06-21T11:53:55.9483329Z         "impl",
2026-06-21T11:53:55.9483415Z         "unit"
2026-06-21T11:53:55.9483502Z       ],
2026-06-21T11:53:55.9483582Z       "stages": {
2026-06-21T11:53:55.9483663Z         "doc": {
2026-06-21T11:53:55.9483755Z           "complete": false,
2026-06-21T11:53:55.9483850Z           "evidence": []
2026-06-21T11:53:55.9483930Z         },
2026-06-21T11:53:55.9484016Z         "impl": {
2026-06-21T11:53:55.9484113Z           "complete": true,
2026-06-21T11:53:55.9484197Z           "evidence": [
2026-06-21T11:53:55.9484282Z             {
2026-06-21T11:53:55.9484401Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9484483Z               "line": 778
2026-06-21T11:53:55.9484573Z             },
2026-06-21T11:53:55.9484654Z             {
2026-06-21T11:53:55.9484769Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9484855Z               "line": 1167
2026-06-21T11:53:55.9485031Z             },
2026-06-21T11:53:55.9485117Z             {
2026-06-21T11:53:55.9485231Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9485422Z               "line": 2387
2026-06-21T11:53:55.9485503Z             },
2026-06-21T11:53:55.9485588Z             {
2026-06-21T11:53:55.9485689Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9485785Z               "line": 125
2026-06-21T11:53:55.9485860Z             },
2026-06-21T11:53:55.9485946Z             {
2026-06-21T11:53:55.9486057Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9486146Z               "line": 715
2026-06-21T11:53:55.9486227Z             },
2026-06-21T11:53:55.9486314Z             {
2026-06-21T11:53:55.9486428Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9486513Z               "line": 864
2026-06-21T11:53:55.9486598Z             },
2026-06-21T11:53:55.9486689Z             {
2026-06-21T11:53:55.9486802Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9486901Z               "line": 321
2026-06-21T11:53:55.9486978Z             },
2026-06-21T11:53:55.9487069Z             {
2026-06-21T11:53:55.9487182Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9487277Z               "line": 508
2026-06-21T11:53:55.9487365Z             },
2026-06-21T11:53:55.9487450Z             {
2026-06-21T11:53:55.9487568Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9487655Z               "line": 1334
2026-06-21T11:53:55.9487741Z             }
2026-06-21T11:53:55.9487826Z           ]
2026-06-21T11:53:55.9487912Z         },
2026-06-21T11:53:55.9487994Z         "int": {
2026-06-21T11:53:55.9488074Z           "complete": false,
2026-06-21T11:53:55.9488174Z           "evidence": []
2026-06-21T11:53:55.9488251Z         },
2026-06-21T11:53:55.9488332Z         "unit": {
2026-06-21T11:53:55.9488423Z           "complete": true,
2026-06-21T11:53:55.9488517Z           "evidence": [
2026-06-21T11:53:55.9488604Z             {
2026-06-21T11:53:55.9488713Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9488813Z               "line": 955
2026-06-21T11:53:55.9488896Z             },
2026-06-21T11:53:55.9489075Z             {
2026-06-21T11:53:55.9489196Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T11:53:55.9489282Z               "line": 76
2026-06-21T11:53:55.9489371Z             },
2026-06-21T11:53:55.9489451Z             {
2026-06-21T11:53:55.9489570Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T11:53:55.9489655Z               "line": 147
2026-06-21T11:53:55.9489735Z             }
2026-06-21T11:53:55.9489816Z           ]
2026-06-21T11:53:55.9489892Z         }
2026-06-21T11:53:55.9494653Z       }
2026-06-21T11:53:55.9494772Z     },
2026-06-21T11:53:55.9494852Z     {
2026-06-21T11:53:55.9494947Z       "id": "REQ-EP-5",
2026-06-21T11:53:55.9495630Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T11:53:55.9495749Z       "requiredStages": [
2026-06-21T11:53:55.9495838Z         "impl",
2026-06-21T11:53:55.9495925Z         "unit",
2026-06-21T11:53:55.9496011Z         "int"
2026-06-21T11:53:55.9496087Z       ],
2026-06-21T11:53:55.9496167Z       "stages": {
2026-06-21T11:53:55.9496259Z         "doc": {
2026-06-21T11:53:55.9496363Z           "complete": false,
2026-06-21T11:53:55.9496449Z           "evidence": []
2026-06-21T11:53:55.9496540Z         },
2026-06-21T11:53:55.9496622Z         "impl": {
2026-06-21T11:53:55.9496716Z           "complete": true,
2026-06-21T11:53:55.9496802Z           "evidence": [
2026-06-21T11:53:55.9496888Z             {
2026-06-21T11:53:55.9497025Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:55.9497111Z               "line": 367
2026-06-21T11:53:55.9497357Z             },
2026-06-21T11:53:55.9497433Z             {
2026-06-21T11:53:55.9497557Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9497724Z               "line": 18
2026-06-21T11:53:55.9497814Z             },
2026-06-21T11:53:55.9497896Z             {
2026-06-21T11:53:55.9498005Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9498090Z               "line": 63
2026-06-21T11:53:55.9498172Z             },
2026-06-21T11:53:55.9498254Z             {
2026-06-21T11:53:55.9498367Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9498458Z               "line": 92
2026-06-21T11:53:55.9498544Z             },
2026-06-21T11:53:55.9498625Z             {
2026-06-21T11:53:55.9498739Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9498826Z               "line": 167
2026-06-21T11:53:55.9498902Z             },
2026-06-21T11:53:55.9499102Z             {
2026-06-21T11:53:55.9499226Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9499321Z               "line": 179
2026-06-21T11:53:55.9499412Z             },
2026-06-21T11:53:55.9499494Z             {
2026-06-21T11:53:55.9499602Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:55.9499688Z               "line": 114
2026-06-21T11:53:55.9499760Z             },
2026-06-21T11:53:55.9499847Z             {
2026-06-21T11:53:55.9499973Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9500054Z               "line": 22
2026-06-21T11:53:55.9500131Z             },
2026-06-21T11:53:55.9500201Z             {
2026-06-21T11:53:55.9500318Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9500410Z               "line": 145
2026-06-21T11:53:55.9500487Z             },
2026-06-21T11:53:55.9500563Z             {
2026-06-21T11:53:55.9500681Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9500763Z               "line": 174
2026-06-21T11:53:55.9500858Z             },
2026-06-21T11:53:55.9500939Z             {
2026-06-21T11:53:55.9501049Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9501140Z               "line": 196
2026-06-21T11:53:55.9501225Z             },
2026-06-21T11:53:55.9501305Z             {
2026-06-21T11:53:55.9501416Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9501502Z               "line": 221
2026-06-21T11:53:55.9501587Z             },
2026-06-21T11:53:55.9501664Z             {
2026-06-21T11:53:55.9501774Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9501858Z               "line": 247
2026-06-21T11:53:55.9501935Z             },
2026-06-21T11:53:55.9502023Z             {
2026-06-21T11:53:55.9502136Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9502217Z               "line": 270
2026-06-21T11:53:55.9502308Z             },
2026-06-21T11:53:55.9502380Z             {
2026-06-21T11:53:55.9502507Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.9502597Z               "line": 104
2026-06-21T11:53:55.9502683Z             },
2026-06-21T11:53:55.9502763Z             {
2026-06-21T11:53:55.9502871Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9502957Z               "line": 6068
2026-06-21T11:53:55.9503034Z             },
2026-06-21T11:53:55.9503120Z             {
2026-06-21T11:53:55.9503224Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9503306Z               "line": 6202
2026-06-21T11:53:55.9503382Z             },
2026-06-21T11:53:55.9503463Z             {
2026-06-21T11:53:55.9503563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9503654Z               "line": 6368
2026-06-21T11:53:55.9503739Z             },
2026-06-21T11:53:55.9503820Z             {
2026-06-21T11:53:55.9503916Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9504002Z               "line": 6896
2026-06-21T11:53:55.9504187Z             }
2026-06-21T11:53:55.9504274Z           ]
2026-06-21T11:53:55.9504355Z         },
2026-06-21T11:53:55.9504540Z         "int": {
2026-06-21T11:53:55.9504632Z           "complete": true,
2026-06-21T11:53:55.9504725Z           "evidence": [
2026-06-21T11:53:55.9504807Z             {
2026-06-21T11:53:55.9504942Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T11:53:55.9505031Z               "line": 16
2026-06-21T11:53:55.9505107Z             },
2026-06-21T11:53:55.9505190Z             {
2026-06-21T11:53:55.9505300Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T11:53:55.9505383Z               "line": 15
2026-06-21T11:53:55.9505459Z             }
2026-06-21T11:53:55.9505531Z           ]
2026-06-21T11:53:55.9505613Z         },
2026-06-21T11:53:55.9505698Z         "unit": {
2026-06-21T11:53:55.9505793Z           "complete": true,
2026-06-21T11:53:55.9505879Z           "evidence": [
2026-06-21T11:53:55.9505965Z             {
2026-06-21T11:53:55.9506098Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9506190Z               "line": 246
2026-06-21T11:53:55.9506285Z             },
2026-06-21T11:53:55.9506365Z             {
2026-06-21T11:53:55.9506480Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9506571Z               "line": 306
2026-06-21T11:53:55.9506657Z             },
2026-06-21T11:53:55.9506747Z             {
2026-06-21T11:53:55.9506848Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T11:53:55.9506942Z               "line": 363
2026-06-21T11:53:55.9507023Z             },
2026-06-21T11:53:55.9507105Z             {
2026-06-21T11:53:55.9507224Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9507309Z               "line": 286
2026-06-21T11:53:55.9507400Z             },
2026-06-21T11:53:55.9507478Z             {
2026-06-21T11:53:55.9507600Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9507685Z               "line": 338
2026-06-21T11:53:55.9507771Z             },
2026-06-21T11:53:55.9507856Z             {
2026-06-21T11:53:55.9507974Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.9508069Z               "line": 783
2026-06-21T11:53:55.9508150Z             },
2026-06-21T11:53:55.9508227Z             {
2026-06-21T11:53:55.9508331Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9508432Z               "line": 8751
2026-06-21T11:53:55.9508504Z             },
2026-06-21T11:53:55.9508584Z             {
2026-06-21T11:53:55.9508688Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9508766Z               "line": 8904
2026-06-21T11:53:55.9508852Z             },
2026-06-21T11:53:55.9508932Z             {
2026-06-21T11:53:55.9509128Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9509218Z               "line": 9493
2026-06-21T11:53:55.9509304Z             },
2026-06-21T11:53:55.9509391Z             {
2026-06-21T11:53:55.9509490Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9509590Z               "line": 9609
2026-06-21T11:53:55.9509672Z             }
2026-06-21T11:53:55.9509763Z           ]
2026-06-21T11:53:55.9509847Z         }
2026-06-21T11:53:55.9509929Z       }
2026-06-21T11:53:55.9510006Z     },
2026-06-21T11:53:55.9510087Z     {
2026-06-21T11:53:55.9510181Z       "id": "REQ-EP-6",
2026-06-21T11:53:55.9511671Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T11:53:55.9511776Z       "requiredStages": [
2026-06-21T11:53:55.9511865Z         "doc",
2026-06-21T11:53:55.9512052Z         "impl",
2026-06-21T11:53:55.9512138Z         "unit"
2026-06-21T11:53:55.9512224Z       ],
2026-06-21T11:53:55.9512395Z       "stages": {
2026-06-21T11:53:55.9512472Z         "doc": {
2026-06-21T11:53:55.9512568Z           "complete": true,
2026-06-21T11:53:55.9512654Z           "evidence": [
2026-06-21T11:53:55.9512729Z             {
2026-06-21T11:53:55.9512829Z               "path": "CONTEXT.md",
2026-06-21T11:53:55.9512916Z               "line": 227
2026-06-21T11:53:55.9512997Z             }
2026-06-21T11:53:55.9513076Z           ]
2026-06-21T11:53:55.9513167Z         },
2026-06-21T11:53:55.9513248Z         "impl": {
2026-06-21T11:53:55.9513333Z           "complete": true,
2026-06-21T11:53:55.9513422Z           "evidence": [
2026-06-21T11:53:55.9513507Z             {
2026-06-21T11:53:55.9513627Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9513718Z               "line": 212
2026-06-21T11:53:55.9513808Z             }
2026-06-21T11:53:55.9513890Z           ]
2026-06-21T11:53:55.9513975Z         },
2026-06-21T11:53:55.9514060Z         "int": {
2026-06-21T11:53:55.9514146Z           "complete": true,
2026-06-21T11:53:55.9514229Z           "evidence": [
2026-06-21T11:53:55.9514309Z             {
2026-06-21T11:53:55.9514437Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T11:53:55.9514519Z               "line": 18
2026-06-21T11:53:55.9514591Z             }
2026-06-21T11:53:55.9514677Z           ]
2026-06-21T11:53:55.9514757Z         },
2026-06-21T11:53:55.9514834Z         "unit": {
2026-06-21T11:53:55.9514924Z           "complete": true,
2026-06-21T11:53:55.9515005Z           "evidence": [
2026-06-21T11:53:55.9515081Z             {
2026-06-21T11:53:55.9515202Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:55.9515290Z               "line": 556
2026-06-21T11:53:55.9515367Z             },
2026-06-21T11:53:55.9515445Z             {
2026-06-21T11:53:55.9515554Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9515644Z               "line": 904
2026-06-21T11:53:55.9515730Z             }
2026-06-21T11:53:55.9515812Z           ]
2026-06-21T11:53:55.9515906Z         }
2026-06-21T11:53:55.9515991Z       }
2026-06-21T11:53:55.9516072Z     },
2026-06-21T11:53:55.9516159Z     {
2026-06-21T11:53:55.9516249Z       "id": "REQ-EP-7",
2026-06-21T11:53:55.9517903Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T11:53:55.9518004Z       "requiredStages": [
2026-06-21T11:53:55.9518090Z         "doc",
2026-06-21T11:53:55.9518189Z         "impl",
2026-06-21T11:53:55.9518269Z         "unit"
2026-06-21T11:53:55.9518350Z       ],
2026-06-21T11:53:55.9518444Z       "stages": {
2026-06-21T11:53:55.9518529Z         "doc": {
2026-06-21T11:53:55.9518614Z           "complete": true,
2026-06-21T11:53:55.9518711Z           "evidence": [
2026-06-21T11:53:55.9518792Z             {
2026-06-21T11:53:55.9518882Z               "path": "CONTEXT.md",
2026-06-21T11:53:55.9519040Z               "line": 490
2026-06-21T11:53:55.9519121Z             }
2026-06-21T11:53:55.9519201Z           ]
2026-06-21T11:53:55.9519287Z         },
2026-06-21T11:53:55.9519374Z         "impl": {
2026-06-21T11:53:55.9519468Z           "complete": true,
2026-06-21T11:53:55.9519554Z           "evidence": [
2026-06-21T11:53:55.9519646Z             {
2026-06-21T11:53:55.9519760Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:55.9519845Z               "line": 505
2026-06-21T11:53:55.9519922Z             },
2026-06-21T11:53:55.9520008Z             {
2026-06-21T11:53:55.9520222Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:55.9520313Z               "line": 87
2026-06-21T11:53:55.9520479Z             },
2026-06-21T11:53:55.9520561Z             {
2026-06-21T11:53:55.9520689Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:55.9520770Z               "line": 81
2026-06-21T11:53:55.9520857Z             },
2026-06-21T11:53:55.9520943Z             {
2026-06-21T11:53:55.9521065Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:55.9521160Z               "line": 166
2026-06-21T11:53:55.9521237Z             },
2026-06-21T11:53:55.9521316Z             {
2026-06-21T11:53:55.9521416Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9521511Z               "line": 1645
2026-06-21T11:53:55.9521592Z             }
2026-06-21T11:53:55.9521678Z           ]
2026-06-21T11:53:55.9521763Z         },
2026-06-21T11:53:55.9521844Z         "int": {
2026-06-21T11:53:55.9521955Z           "complete": false,
2026-06-21T11:53:55.9522040Z           "evidence": []
2026-06-21T11:53:55.9522125Z         },
2026-06-21T11:53:55.9522208Z         "unit": {
2026-06-21T11:53:55.9522288Z           "complete": true,
2026-06-21T11:53:55.9522373Z           "evidence": [
2026-06-21T11:53:55.9522455Z             {
2026-06-21T11:53:55.9522560Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:55.9522641Z               "line": 623
2026-06-21T11:53:55.9522726Z             },
2026-06-21T11:53:55.9522813Z             {
2026-06-21T11:53:55.9522918Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:55.9523003Z               "line": 212
2026-06-21T11:53:55.9523089Z             },
2026-06-21T11:53:55.9523162Z             {
2026-06-21T11:53:55.9523261Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:55.9523347Z               "line": 307
2026-06-21T11:53:55.9523433Z             },
2026-06-21T11:53:55.9523505Z             {
2026-06-21T11:53:55.9523613Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9523698Z               "line": 7724
2026-06-21T11:53:55.9523784Z             },
2026-06-21T11:53:55.9523869Z             {
2026-06-21T11:53:55.9523972Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9524058Z               "line": 7751
2026-06-21T11:53:55.9524139Z             }
2026-06-21T11:53:55.9524222Z           ]
2026-06-21T11:53:55.9524292Z         }
2026-06-21T11:53:55.9524378Z       }
2026-06-21T11:53:55.9524460Z     },
2026-06-21T11:53:55.9524540Z     {
2026-06-21T11:53:55.9524639Z       "id": "REQ-FRONT-1",
2026-06-21T11:53:55.9524812Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T11:53:55.9524912Z       "requiredStages": [],
2026-06-21T11:53:55.9524997Z       "stages": {
2026-06-21T11:53:55.9525079Z         "doc": {
2026-06-21T11:53:55.9525174Z           "complete": false,
2026-06-21T11:53:55.9525265Z           "evidence": []
2026-06-21T11:53:55.9525350Z         },
2026-06-21T11:53:55.9525433Z         "impl": {
2026-06-21T11:53:55.9525522Z           "complete": false,
2026-06-21T11:53:55.9525607Z           "evidence": []
2026-06-21T11:53:55.9525690Z         },
2026-06-21T11:53:55.9525776Z         "int": {
2026-06-21T11:53:55.9525875Z           "complete": false,
2026-06-21T11:53:55.9525966Z           "evidence": []
2026-06-21T11:53:55.9526048Z         },
2026-06-21T11:53:55.9526137Z         "unit": {
2026-06-21T11:53:55.9526223Z           "complete": false,
2026-06-21T11:53:55.9526320Z           "evidence": []
2026-06-21T11:53:55.9526401Z         }
2026-06-21T11:53:55.9526485Z       }
2026-06-21T11:53:55.9526565Z     },
2026-06-21T11:53:55.9526646Z     {
2026-06-21T11:53:55.9526752Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T11:53:55.9532143Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T11:53:55.9532472Z       "requiredStages": [
2026-06-21T11:53:55.9532562Z         "int"
2026-06-21T11:53:55.9532643Z       ],
2026-06-21T11:53:55.9532724Z       "stages": {
2026-06-21T11:53:55.9532810Z         "doc": {
2026-06-21T11:53:55.9532896Z           "complete": false,
2026-06-21T11:53:55.9532986Z           "evidence": []
2026-06-21T11:53:55.9533068Z         },
2026-06-21T11:53:55.9533158Z         "impl": {
2026-06-21T11:53:55.9533244Z           "complete": false,
2026-06-21T11:53:55.9533329Z           "evidence": []
2026-06-21T11:53:55.9533421Z         },
2026-06-21T11:53:55.9533506Z         "int": {
2026-06-21T11:53:55.9533592Z           "complete": true,
2026-06-21T11:53:55.9533678Z           "evidence": [
2026-06-21T11:53:55.9533759Z             {
2026-06-21T11:53:55.9533887Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T11:53:55.9533984Z               "line": 300
2026-06-21T11:53:55.9534060Z             }
2026-06-21T11:53:55.9534145Z           ]
2026-06-21T11:53:55.9534229Z         },
2026-06-21T11:53:55.9534310Z         "unit": {
2026-06-21T11:53:55.9534406Z           "complete": false,
2026-06-21T11:53:55.9534499Z           "evidence": []
2026-06-21T11:53:55.9534584Z         }
2026-06-21T11:53:55.9534671Z       }
2026-06-21T11:53:55.9534753Z     },
2026-06-21T11:53:55.9534833Z     {
2026-06-21T11:53:55.9534938Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T11:53:55.9537502Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T11:53:55.9537622Z       "requiredStages": [
2026-06-21T11:53:55.9537703Z         "impl",
2026-06-21T11:53:55.9537788Z         "unit",
2026-06-21T11:53:55.9537861Z         "int"
2026-06-21T11:53:55.9538027Z       ],
2026-06-21T11:53:55.9538112Z       "stages": {
2026-06-21T11:53:55.9538199Z         "doc": {
2026-06-21T11:53:55.9538356Z           "complete": false,
2026-06-21T11:53:55.9538437Z           "evidence": []
2026-06-21T11:53:55.9538523Z         },
2026-06-21T11:53:55.9538609Z         "impl": {
2026-06-21T11:53:55.9538704Z           "complete": true,
2026-06-21T11:53:55.9538785Z           "evidence": [
2026-06-21T11:53:55.9538867Z             {
2026-06-21T11:53:55.9539056Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9539144Z               "line": 257
2026-06-21T11:53:55.9539229Z             }
2026-06-21T11:53:55.9539309Z           ]
2026-06-21T11:53:55.9539389Z         },
2026-06-21T11:53:55.9539475Z         "int": {
2026-06-21T11:53:55.9539570Z           "complete": true,
2026-06-21T11:53:55.9539654Z           "evidence": [
2026-06-21T11:53:55.9539730Z             {
2026-06-21T11:53:55.9539869Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T11:53:55.9539950Z               "line": 93
2026-06-21T11:53:55.9540031Z             }
2026-06-21T11:53:55.9540112Z           ]
2026-06-21T11:53:55.9540198Z         },
2026-06-21T11:53:55.9540288Z         "unit": {
2026-06-21T11:53:55.9540369Z           "complete": true,
2026-06-21T11:53:55.9540451Z           "evidence": [
2026-06-21T11:53:55.9540532Z             {
2026-06-21T11:53:55.9540650Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9540737Z               "line": 802
2026-06-21T11:53:55.9540818Z             },
2026-06-21T11:53:55.9540895Z             {
2026-06-21T11:53:55.9541003Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9541095Z               "line": 824
2026-06-21T11:53:55.9541165Z             },
2026-06-21T11:53:55.9541256Z             {
2026-06-21T11:53:55.9541372Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9541443Z               "line": 855
2026-06-21T11:53:55.9541532Z             }
2026-06-21T11:53:55.9541618Z           ]
2026-06-21T11:53:55.9541701Z         }
2026-06-21T11:53:55.9541781Z       }
2026-06-21T11:53:55.9541866Z     },
2026-06-21T11:53:55.9541958Z     {
2026-06-21T11:53:55.9542073Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T11:53:55.9544544Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T11:53:55.9544658Z       "requiredStages": [
2026-06-21T11:53:55.9544743Z         "doc",
2026-06-21T11:53:55.9544827Z         "impl",
2026-06-21T11:53:55.9544909Z         "unit",
2026-06-21T11:53:55.9544994Z         "int"
2026-06-21T11:53:55.9545074Z       ],
2026-06-21T11:53:55.9545159Z       "stages": {
2026-06-21T11:53:55.9545251Z         "doc": {
2026-06-21T11:53:55.9545346Z           "complete": true,
2026-06-21T11:53:55.9545441Z           "evidence": [
2026-06-21T11:53:55.9545526Z             {
2026-06-21T11:53:55.9545632Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9545722Z               "line": 333
2026-06-21T11:53:55.9545798Z             }
2026-06-21T11:53:55.9545885Z           ]
2026-06-21T11:53:55.9545966Z         },
2026-06-21T11:53:55.9546056Z         "impl": {
2026-06-21T11:53:55.9546142Z           "complete": true,
2026-06-21T11:53:55.9546233Z           "evidence": [
2026-06-21T11:53:55.9546423Z             {
2026-06-21T11:53:55.9546553Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9546737Z               "line": 494
2026-06-21T11:53:55.9546825Z             },
2026-06-21T11:53:55.9546914Z             {
2026-06-21T11:53:55.9547043Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9547120Z               "line": 499
2026-06-21T11:53:55.9547206Z             },
2026-06-21T11:53:55.9547291Z             {
2026-06-21T11:53:55.9547411Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9547497Z               "line": 874
2026-06-21T11:53:55.9547586Z             },
2026-06-21T11:53:55.9547666Z             {
2026-06-21T11:53:55.9547786Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9547877Z               "line": 915
2026-06-21T11:53:55.9547953Z             },
2026-06-21T11:53:55.9548038Z             {
2026-06-21T11:53:55.9548163Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9548258Z               "line": 926
2026-06-21T11:53:55.9548343Z             },
2026-06-21T11:53:55.9548435Z             {
2026-06-21T11:53:55.9548554Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:55.9548634Z               "line": 358
2026-06-21T11:53:55.9548715Z             }
2026-06-21T11:53:55.9548797Z           ]
2026-06-21T11:53:55.9548882Z         },
2026-06-21T11:53:55.9549060Z         "int": {
2026-06-21T11:53:55.9549160Z           "complete": true,
2026-06-21T11:53:55.9549259Z           "evidence": [
2026-06-21T11:53:55.9549341Z             {
2026-06-21T11:53:55.9549479Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T11:53:55.9549564Z               "line": 30
2026-06-21T11:53:55.9549651Z             }
2026-06-21T11:53:55.9549728Z           ]
2026-06-21T11:53:55.9549808Z         },
2026-06-21T11:53:55.9549897Z         "unit": {
2026-06-21T11:53:55.9549977Z           "complete": true,
2026-06-21T11:53:55.9550078Z           "evidence": [
2026-06-21T11:53:55.9550158Z             {
2026-06-21T11:53:55.9550281Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9550376Z               "line": 1493
2026-06-21T11:53:55.9550459Z             },
2026-06-21T11:53:55.9550538Z             {
2026-06-21T11:53:55.9550658Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9550753Z               "line": 1518
2026-06-21T11:53:55.9550834Z             },
2026-06-21T11:53:55.9550924Z             {
2026-06-21T11:53:55.9551035Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9551116Z               "line": 1535
2026-06-21T11:53:55.9551196Z             },
2026-06-21T11:53:55.9551273Z             {
2026-06-21T11:53:55.9551388Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9551473Z               "line": 1578
2026-06-21T11:53:55.9551559Z             }
2026-06-21T11:53:55.9551645Z           ]
2026-06-21T11:53:55.9551735Z         }
2026-06-21T11:53:55.9551825Z       }
2026-06-21T11:53:55.9551907Z     },
2026-06-21T11:53:55.9551999Z     {
2026-06-21T11:53:55.9552140Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T11:53:55.9554736Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T11:53:55.9555046Z       "requiredStages": [],
2026-06-21T11:53:55.9555133Z       "stages": {
2026-06-21T11:53:55.9555214Z         "doc": {
2026-06-21T11:53:55.9555308Z           "complete": false,
2026-06-21T11:53:55.9555392Z           "evidence": []
2026-06-21T11:53:55.9555484Z         },
2026-06-21T11:53:55.9555573Z         "impl": {
2026-06-21T11:53:55.9555663Z           "complete": false,
2026-06-21T11:53:55.9555758Z           "evidence": []
2026-06-21T11:53:55.9555834Z         },
2026-06-21T11:53:55.9555925Z         "int": {
2026-06-21T11:53:55.9556015Z           "complete": false,
2026-06-21T11:53:55.9556111Z           "evidence": []
2026-06-21T11:53:55.9556192Z         },
2026-06-21T11:53:55.9556277Z         "unit": {
2026-06-21T11:53:55.9556372Z           "complete": false,
2026-06-21T11:53:55.9556464Z           "evidence": []
2026-06-21T11:53:55.9556550Z         }
2026-06-21T11:53:55.9556649Z       }
2026-06-21T11:53:55.9556736Z     },
2026-06-21T11:53:55.9556821Z     {
2026-06-21T11:53:55.9556959Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T11:53:55.9560798Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T11:53:55.9560927Z       "requiredStages": [
2026-06-21T11:53:55.9561014Z         "impl",
2026-06-21T11:53:55.9561098Z         "unit",
2026-06-21T11:53:55.9561184Z         "int"
2026-06-21T11:53:55.9561256Z       ],
2026-06-21T11:53:55.9561342Z       "stages": {
2026-06-21T11:53:55.9561418Z         "doc": {
2026-06-21T11:53:55.9561513Z           "complete": false,
2026-06-21T11:53:55.9561605Z           "evidence": []
2026-06-21T11:53:55.9561695Z         },
2026-06-21T11:53:55.9561780Z         "impl": {
2026-06-21T11:53:55.9561872Z           "complete": true,
2026-06-21T11:53:55.9561967Z           "evidence": [
2026-06-21T11:53:55.9562057Z             {
2026-06-21T11:53:55.9562196Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9562281Z               "line": 570
2026-06-21T11:53:55.9562367Z             },
2026-06-21T11:53:55.9562443Z             {
2026-06-21T11:53:55.9562568Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9562657Z               "line": 594
2026-06-21T11:53:55.9562738Z             },
2026-06-21T11:53:55.9562821Z             {
2026-06-21T11:53:55.9562930Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9563020Z               "line": 620
2026-06-21T11:53:55.9563107Z             },
2026-06-21T11:53:55.9563188Z             {
2026-06-21T11:53:55.9563305Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9563396Z               "line": 679
2026-06-21T11:53:55.9563481Z             },
2026-06-21T11:53:55.9563674Z             {
2026-06-21T11:53:55.9563794Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:55.9563956Z               "line": 89
2026-06-21T11:53:55.9564037Z             },
2026-06-21T11:53:55.9564124Z             {
2026-06-21T11:53:55.9564234Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:55.9564328Z               "line": 134
2026-06-21T11:53:55.9564410Z             }
2026-06-21T11:53:55.9564496Z           ]
2026-06-21T11:53:55.9564577Z         },
2026-06-21T11:53:55.9564666Z         "int": {
2026-06-21T11:53:55.9564768Z           "complete": true,
2026-06-21T11:53:55.9564852Z           "evidence": [
2026-06-21T11:53:55.9564933Z             {
2026-06-21T11:53:55.9565087Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T11:53:55.9565167Z               "line": 20
2026-06-21T11:53:55.9565258Z             }
2026-06-21T11:53:55.9565329Z           ]
2026-06-21T11:53:55.9565421Z         },
2026-06-21T11:53:55.9565510Z         "unit": {
2026-06-21T11:53:55.9565601Z           "complete": true,
2026-06-21T11:53:55.9565698Z           "evidence": [
2026-06-21T11:53:55.9565783Z             {
2026-06-21T11:53:55.9565906Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9565996Z               "line": 1047
2026-06-21T11:53:55.9566087Z             },
2026-06-21T11:53:55.9566165Z             {
2026-06-21T11:53:55.9566274Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:55.9566361Z               "line": 445
2026-06-21T11:53:55.9566448Z             }
2026-06-21T11:53:55.9566523Z           ]
2026-06-21T11:53:55.9566603Z         }
2026-06-21T11:53:55.9566686Z       }
2026-06-21T11:53:55.9566766Z     },
2026-06-21T11:53:55.9566856Z     {
2026-06-21T11:53:55.9566971Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T11:53:55.9569641Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T11:53:55.9569759Z       "requiredStages": [
2026-06-21T11:53:55.9569841Z         "doc",
2026-06-21T11:53:55.9569922Z         "impl",
2026-06-21T11:53:55.9570007Z         "unit",
2026-06-21T11:53:55.9570088Z         "int"
2026-06-21T11:53:55.9570175Z       ],
2026-06-21T11:53:55.9570266Z       "stages": {
2026-06-21T11:53:55.9570356Z         "doc": {
2026-06-21T11:53:55.9570456Z           "complete": true,
2026-06-21T11:53:55.9570542Z           "evidence": [
2026-06-21T11:53:55.9570623Z             {
2026-06-21T11:53:55.9570728Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9570819Z               "line": 302
2026-06-21T11:53:55.9570904Z             }
2026-06-21T11:53:55.9570980Z           ]
2026-06-21T11:53:55.9571065Z         },
2026-06-21T11:53:55.9571146Z         "impl": {
2026-06-21T11:53:55.9571241Z           "complete": true,
2026-06-21T11:53:55.9571320Z           "evidence": [
2026-06-21T11:53:55.9571410Z             {
2026-06-21T11:53:55.9571536Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:55.9571616Z               "line": 108
2026-06-21T11:53:55.9571706Z             },
2026-06-21T11:53:55.9571783Z             {
2026-06-21T11:53:55.9571902Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9571992Z               "line": 883
2026-06-21T11:53:55.9572179Z             },
2026-06-21T11:53:55.9572260Z             {
2026-06-21T11:53:55.9572470Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9572565Z               "line": 1083
2026-06-21T11:53:55.9572645Z             },
2026-06-21T11:53:55.9572727Z             {
2026-06-21T11:53:55.9572846Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9572937Z               "line": 23
2026-06-21T11:53:55.9573027Z             },
2026-06-21T11:53:55.9573100Z             {
2026-06-21T11:53:55.9573222Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9573303Z               "line": 113
2026-06-21T11:53:55.9573386Z             },
2026-06-21T11:53:55.9573457Z             {
2026-06-21T11:53:55.9573581Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9573667Z               "line": 158
2026-06-21T11:53:55.9573748Z             },
2026-06-21T11:53:55.9573828Z             {
2026-06-21T11:53:55.9573961Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9574046Z               "line": 218
2026-06-21T11:53:55.9574136Z             },
2026-06-21T11:53:55.9574211Z             {
2026-06-21T11:53:55.9574331Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9574417Z               "line": 261
2026-06-21T11:53:55.9574498Z             },
2026-06-21T11:53:55.9574578Z             {
2026-06-21T11:53:55.9574703Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9574789Z               "line": 275
2026-06-21T11:53:55.9574873Z             },
2026-06-21T11:53:55.9574960Z             {
2026-06-21T11:53:55.9575074Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9575160Z               "line": 320
2026-06-21T11:53:55.9575241Z             },
2026-06-21T11:53:55.9575318Z             {
2026-06-21T11:53:55.9575441Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9575527Z               "line": 347
2026-06-21T11:53:55.9575614Z             },
2026-06-21T11:53:55.9575695Z             {
2026-06-21T11:53:55.9575827Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9575904Z               "line": 359
2026-06-21T11:53:55.9575996Z             },
2026-06-21T11:53:55.9576084Z             {
2026-06-21T11:53:55.9576200Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9576287Z               "line": 373
2026-06-21T11:53:55.9576367Z             },
2026-06-21T11:53:55.9576456Z             {
2026-06-21T11:53:55.9576575Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9576670Z               "line": 400
2026-06-21T11:53:55.9576759Z             },
2026-06-21T11:53:55.9576839Z             {
2026-06-21T11:53:55.9576955Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9577036Z               "line": 643
2026-06-21T11:53:55.9577116Z             },
2026-06-21T11:53:55.9577207Z             {
2026-06-21T11:53:55.9577331Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9577421Z               "line": 989
2026-06-21T11:53:55.9577507Z             },
2026-06-21T11:53:55.9577590Z             {
2026-06-21T11:53:55.9577717Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9577803Z               "line": 317
2026-06-21T11:53:55.9577885Z             },
2026-06-21T11:53:55.9577970Z             {
2026-06-21T11:53:55.9578089Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9578171Z               "line": 1269
2026-06-21T11:53:55.9580944Z             },
2026-06-21T11:53:55.9581060Z             {
2026-06-21T11:53:55.9581201Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9581297Z               "line": 1341
2026-06-21T11:53:55.9581379Z             },
2026-06-21T11:53:55.9581460Z             {
2026-06-21T11:53:55.9581587Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9581815Z               "line": 1353
2026-06-21T11:53:55.9581895Z             },
2026-06-21T11:53:55.9582071Z             {
2026-06-21T11:53:55.9582186Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9582266Z               "line": 2093
2026-06-21T11:53:55.9582353Z             },
2026-06-21T11:53:55.9582434Z             {
2026-06-21T11:53:55.9582552Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9582648Z               "line": 188
2026-06-21T11:53:55.9582735Z             },
2026-06-21T11:53:55.9582810Z             {
2026-06-21T11:53:55.9582919Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9583002Z               "line": 265
2026-06-21T11:53:55.9583087Z             },
2026-06-21T11:53:55.9583168Z             {
2026-06-21T11:53:55.9583268Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9583359Z               "line": 276
2026-06-21T11:53:55.9583439Z             },
2026-06-21T11:53:55.9583520Z             {
2026-06-21T11:53:55.9583650Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9583740Z               "line": 329
2026-06-21T11:53:55.9583821Z             },
2026-06-21T11:53:55.9583907Z             {
2026-06-21T11:53:55.9584031Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9584116Z               "line": 56
2026-06-21T11:53:55.9584203Z             },
2026-06-21T11:53:55.9584275Z             {
2026-06-21T11:53:55.9584393Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9584473Z               "line": 188
2026-06-21T11:53:55.9584549Z             },
2026-06-21T11:53:55.9584630Z             {
2026-06-21T11:53:55.9584743Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T11:53:55.9584823Z               "line": 82
2026-06-21T11:53:55.9584905Z             },
2026-06-21T11:53:55.9584986Z             {
2026-06-21T11:53:55.9585119Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9585210Z               "line": 308
2026-06-21T11:53:55.9585297Z             },
2026-06-21T11:53:55.9585391Z             {
2026-06-21T11:53:55.9585501Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:55.9585583Z               "line": 424
2026-06-21T11:53:55.9585663Z             },
2026-06-21T11:53:55.9585739Z             {
2026-06-21T11:53:55.9585844Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9585940Z               "line": 2006
2026-06-21T11:53:55.9586026Z             }
2026-06-21T11:53:55.9586106Z           ]
2026-06-21T11:53:55.9586193Z         },
2026-06-21T11:53:55.9586274Z         "int": {
2026-06-21T11:53:55.9586364Z           "complete": true,
2026-06-21T11:53:55.9586450Z           "evidence": [
2026-06-21T11:53:55.9586536Z             {
2026-06-21T11:53:55.9586663Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T11:53:55.9586745Z               "line": 57
2026-06-21T11:53:55.9586832Z             },
2026-06-21T11:53:55.9586918Z             {
2026-06-21T11:53:55.9587040Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T11:53:55.9587135Z               "line": 41
2026-06-21T11:53:55.9587207Z             }
2026-06-21T11:53:55.9587291Z           ]
2026-06-21T11:53:55.9587361Z         },
2026-06-21T11:53:55.9587448Z         "unit": {
2026-06-21T11:53:55.9587529Z           "complete": true,
2026-06-21T11:53:55.9587624Z           "evidence": [
2026-06-21T11:53:55.9587710Z             {
2026-06-21T11:53:55.9587840Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:55.9587930Z               "line": 532
2026-06-21T11:53:55.9588005Z             },
2026-06-21T11:53:55.9588087Z             {
2026-06-21T11:53:55.9588201Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:55.9588282Z               "line": 757
2026-06-21T11:53:55.9588368Z             },
2026-06-21T11:53:55.9588450Z             {
2026-06-21T11:53:55.9588563Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9588721Z               "line": 1067
2026-06-21T11:53:55.9588808Z             },
2026-06-21T11:53:55.9589041Z             {
2026-06-21T11:53:55.9589169Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9589259Z               "line": 1101
2026-06-21T11:53:55.9589336Z             },
2026-06-21T11:53:55.9589418Z             {
2026-06-21T11:53:55.9589531Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9589617Z               "line": 1143
2026-06-21T11:53:55.9589699Z             },
2026-06-21T11:53:55.9589785Z             {
2026-06-21T11:53:55.9589893Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9589973Z               "line": 1215
2026-06-21T11:53:55.9590055Z             },
2026-06-21T11:53:55.9590137Z             {
2026-06-21T11:53:55.9590260Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9590341Z               "line": 1228
2026-06-21T11:53:55.9590437Z             },
2026-06-21T11:53:55.9590526Z             {
2026-06-21T11:53:55.9590637Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9590723Z               "line": 1251
2026-06-21T11:53:55.9590804Z             },
2026-06-21T11:53:55.9590889Z             {
2026-06-21T11:53:55.9590995Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9591085Z               "line": 1277
2026-06-21T11:53:55.9591166Z             },
2026-06-21T11:53:55.9591237Z             {
2026-06-21T11:53:55.9591353Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9591438Z               "line": 1291
2026-06-21T11:53:55.9591523Z             },
2026-06-21T11:53:55.9591615Z             {
2026-06-21T11:53:55.9591729Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9591814Z               "line": 1315
2026-06-21T11:53:55.9591895Z             },
2026-06-21T11:53:55.9591973Z             {
2026-06-21T11:53:55.9592090Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9592185Z               "line": 1447
2026-06-21T11:53:55.9592271Z             },
2026-06-21T11:53:55.9592347Z             {
2026-06-21T11:53:55.9592469Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9592550Z               "line": 1623
2026-06-21T11:53:55.9592636Z             },
2026-06-21T11:53:55.9592713Z             {
2026-06-21T11:53:55.9592831Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9592922Z               "line": 1678
2026-06-21T11:53:55.9593004Z             },
2026-06-21T11:53:55.9593084Z             {
2026-06-21T11:53:55.9593199Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9593285Z               "line": 1724
2026-06-21T11:53:55.9593370Z             },
2026-06-21T11:53:55.9593451Z             {
2026-06-21T11:53:55.9593562Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9593652Z               "line": 1769
2026-06-21T11:53:55.9593737Z             },
2026-06-21T11:53:55.9593818Z             {
2026-06-21T11:53:55.9593933Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9594014Z               "line": 1813
2026-06-21T11:53:55.9594099Z             },
2026-06-21T11:53:55.9594187Z             {
2026-06-21T11:53:55.9594295Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9594391Z               "line": 1855
2026-06-21T11:53:55.9594463Z             },
2026-06-21T11:53:55.9594549Z             {
2026-06-21T11:53:55.9594657Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9594753Z               "line": 2447
2026-06-21T11:53:55.9594831Z             },
2026-06-21T11:53:55.9594916Z             {
2026-06-21T11:53:55.9595028Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9595114Z               "line": 217
2026-06-21T11:53:55.9595195Z             },
2026-06-21T11:53:55.9595374Z             {
2026-06-21T11:53:55.9595489Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9595670Z               "line": 233
2026-06-21T11:53:55.9595751Z             },
2026-06-21T11:53:55.9595838Z             {
2026-06-21T11:53:55.9595947Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9596036Z               "line": 254
2026-06-21T11:53:55.9596110Z             },
2026-06-21T11:53:55.9596195Z             {
2026-06-21T11:53:55.9596313Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9596404Z               "line": 265
2026-06-21T11:53:55.9596486Z             },
2026-06-21T11:53:55.9596561Z             {
2026-06-21T11:53:55.9596666Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9596758Z               "line": 278
2026-06-21T11:53:55.9596848Z             },
2026-06-21T11:53:55.9596953Z             {
2026-06-21T11:53:55.9597078Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9597177Z               "line": 289
2026-06-21T11:53:55.9597248Z             },
2026-06-21T11:53:55.9597339Z             {
2026-06-21T11:53:55.9597445Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9597529Z               "line": 301
2026-06-21T11:53:55.9597614Z             },
2026-06-21T11:53:55.9597695Z             {
2026-06-21T11:53:55.9597814Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9597898Z               "line": 312
2026-06-21T11:53:55.9597983Z             },
2026-06-21T11:53:55.9598065Z             {
2026-06-21T11:53:55.9598171Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9598255Z               "line": 323
2026-06-21T11:53:55.9598337Z             },
2026-06-21T11:53:55.9598418Z             {
2026-06-21T11:53:55.9598523Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9598618Z               "line": 332
2026-06-21T11:53:55.9598700Z             },
2026-06-21T11:53:55.9598775Z             {
2026-06-21T11:53:55.9598894Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9599067Z               "line": 342
2026-06-21T11:53:55.9599148Z             },
2026-06-21T11:53:55.9599228Z             {
2026-06-21T11:53:55.9599354Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T11:53:55.9599428Z               "line": 358
2026-06-21T11:53:55.9599509Z             },
2026-06-21T11:53:55.9599586Z             {
2026-06-21T11:53:55.9599697Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9599786Z               "line": 758
2026-06-21T11:53:55.9599867Z             },
2026-06-21T11:53:55.9599954Z             {
2026-06-21T11:53:55.9600072Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9600148Z               "line": 794
2026-06-21T11:53:55.9600226Z             },
2026-06-21T11:53:55.9600307Z             {
2026-06-21T11:53:55.9600419Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:55.9600514Z               "line": 966
2026-06-21T11:53:55.9600586Z             },
2026-06-21T11:53:55.9600683Z             {
2026-06-21T11:53:55.9600786Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T11:53:55.9600872Z               "line": 145
2026-06-21T11:53:55.9600954Z             },
2026-06-21T11:53:55.9601040Z             {
2026-06-21T11:53:55.9601144Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T11:53:55.9601226Z               "line": 224
2026-06-21T11:53:55.9601316Z             },
2026-06-21T11:53:55.9601401Z             {
2026-06-21T11:53:55.9601512Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T11:53:55.9601598Z               "line": 293
2026-06-21T11:53:55.9601669Z             },
2026-06-21T11:53:55.9601754Z             {
2026-06-21T11:53:55.9601860Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T11:53:55.9601950Z               "line": 17
2026-06-21T11:53:55.9602136Z             },
2026-06-21T11:53:55.9602223Z             {
2026-06-21T11:53:55.9602336Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T11:53:55.9602499Z               "line": 104
2026-06-21T11:53:55.9602585Z             }
2026-06-21T11:53:55.9602670Z           ]
2026-06-21T11:53:55.9602750Z         }
2026-06-21T11:53:55.9602826Z       }
2026-06-21T11:53:55.9602902Z     },
2026-06-21T11:53:55.9602981Z     {
2026-06-21T11:53:55.9603105Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T11:53:55.9606187Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T11:53:55.9606311Z       "requiredStages": [
2026-06-21T11:53:55.9606388Z         "doc",
2026-06-21T11:53:55.9606474Z         "impl",
2026-06-21T11:53:55.9606554Z         "unit",
2026-06-21T11:53:55.9606640Z         "int"
2026-06-21T11:53:55.9606722Z       ],
2026-06-21T11:53:55.9606798Z       "stages": {
2026-06-21T11:53:55.9606888Z         "doc": {
2026-06-21T11:53:55.9606974Z           "complete": true,
2026-06-21T11:53:55.9607060Z           "evidence": [
2026-06-21T11:53:55.9607146Z             {
2026-06-21T11:53:55.9607250Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9607342Z               "line": 388
2026-06-21T11:53:55.9607432Z             }
2026-06-21T11:53:55.9607513Z           ]
2026-06-21T11:53:55.9607594Z         },
2026-06-21T11:53:55.9607680Z         "impl": {
2026-06-21T11:53:55.9607765Z           "complete": true,
2026-06-21T11:53:55.9607856Z           "evidence": [
2026-06-21T11:53:55.9607924Z             {
2026-06-21T11:53:55.9608043Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9608136Z               "line": 823
2026-06-21T11:53:55.9608212Z             },
2026-06-21T11:53:55.9608293Z             {
2026-06-21T11:53:55.9608406Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9608491Z               "line": 846
2026-06-21T11:53:55.9608558Z             }
2026-06-21T11:53:55.9608635Z           ]
2026-06-21T11:53:55.9608721Z         },
2026-06-21T11:53:55.9608801Z         "int": {
2026-06-21T11:53:55.9608887Z           "complete": true,
2026-06-21T11:53:55.9609069Z           "evidence": [
2026-06-21T11:53:55.9609154Z             {
2026-06-21T11:53:55.9609279Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T11:53:55.9609360Z               "line": 228
2026-06-21T11:53:55.9609440Z             },
2026-06-21T11:53:55.9609517Z             {
2026-06-21T11:53:55.9609627Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T11:53:55.9609703Z               "line": 468
2026-06-21T11:53:55.9609783Z             }
2026-06-21T11:53:55.9609866Z           ]
2026-06-21T11:53:55.9609951Z         },
2026-06-21T11:53:55.9610037Z         "unit": {
2026-06-21T11:53:55.9610127Z           "complete": true,
2026-06-21T11:53:55.9610199Z           "evidence": [
2026-06-21T11:53:55.9610280Z             {
2026-06-21T11:53:55.9610394Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:55.9610471Z               "line": 1583
2026-06-21T11:53:55.9610660Z             }
2026-06-21T11:53:55.9610742Z           ]
2026-06-21T11:53:55.9610820Z         }
2026-06-21T11:53:55.9610975Z       }
2026-06-21T11:53:55.9611056Z     },
2026-06-21T11:53:55.9611161Z     {
2026-06-21T11:53:55.9611285Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T11:53:55.9614905Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T11:53:55.9615016Z       "requiredStages": [
2026-06-21T11:53:55.9615105Z         "doc",
2026-06-21T11:53:55.9615177Z         "impl",
2026-06-21T11:53:55.9615258Z         "unit"
2026-06-21T11:53:55.9615341Z       ],
2026-06-21T11:53:55.9615425Z       "stages": {
2026-06-21T11:53:55.9615511Z         "doc": {
2026-06-21T11:53:55.9615602Z           "complete": true,
2026-06-21T11:53:55.9615697Z           "evidence": [
2026-06-21T11:53:55.9615787Z             {
2026-06-21T11:53:55.9615883Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9615980Z               "line": 395
2026-06-21T11:53:55.9616064Z             }
2026-06-21T11:53:55.9616149Z           ]
2026-06-21T11:53:55.9616230Z         },
2026-06-21T11:53:55.9616316Z         "impl": {
2026-06-21T11:53:55.9616409Z           "complete": true,
2026-06-21T11:53:55.9616489Z           "evidence": [
2026-06-21T11:53:55.9616571Z             {
2026-06-21T11:53:55.9616691Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9616776Z               "line": 75
2026-06-21T11:53:55.9616861Z             }
2026-06-21T11:53:55.9616943Z           ]
2026-06-21T11:53:55.9617024Z         },
2026-06-21T11:53:55.9617114Z         "int": {
2026-06-21T11:53:55.9617196Z           "complete": false,
2026-06-21T11:53:55.9617282Z           "evidence": []
2026-06-21T11:53:55.9617363Z         },
2026-06-21T11:53:55.9617443Z         "unit": {
2026-06-21T11:53:55.9617529Z           "complete": true,
2026-06-21T11:53:55.9617625Z           "evidence": [
2026-06-21T11:53:55.9617711Z             {
2026-06-21T11:53:55.9617815Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9617902Z               "line": 632
2026-06-21T11:53:55.9617982Z             }
2026-06-21T11:53:55.9618058Z           ]
2026-06-21T11:53:55.9618150Z         }
2026-06-21T11:53:55.9618226Z       }
2026-06-21T11:53:55.9618306Z     },
2026-06-21T11:53:55.9618388Z     {
2026-06-21T11:53:55.9618503Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T11:53:55.9618682Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T11:53:55.9618777Z       "requiredStages": [
2026-06-21T11:53:55.9618863Z         "impl",
2026-06-21T11:53:55.9619023Z         "unit"
2026-06-21T11:53:55.9619109Z       ],
2026-06-21T11:53:55.9619190Z       "stages": {
2026-06-21T11:53:55.9619267Z         "doc": {
2026-06-21T11:53:55.9619361Z           "complete": false,
2026-06-21T11:53:55.9619576Z           "evidence": []
2026-06-21T11:53:55.9619662Z         },
2026-06-21T11:53:55.9619743Z         "impl": {
2026-06-21T11:53:55.9619929Z           "complete": true,
2026-06-21T11:53:55.9620014Z           "evidence": [
2026-06-21T11:53:55.9620097Z             {
2026-06-21T11:53:55.9620220Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.9620301Z               "line": 172
2026-06-21T11:53:55.9620377Z             },
2026-06-21T11:53:55.9620459Z             {
2026-06-21T11:53:55.9620568Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.9620653Z               "line": 18
2026-06-21T11:53:55.9620741Z             },
2026-06-21T11:53:55.9620826Z             {
2026-06-21T11:53:55.9620926Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.9621007Z               "line": 100
2026-06-21T11:53:55.9621089Z             }
2026-06-21T11:53:55.9621169Z           ]
2026-06-21T11:53:55.9621250Z         },
2026-06-21T11:53:55.9621332Z         "int": {
2026-06-21T11:53:55.9621432Z           "complete": false,
2026-06-21T11:53:55.9621512Z           "evidence": []
2026-06-21T11:53:55.9621602Z         },
2026-06-21T11:53:55.9621683Z         "unit": {
2026-06-21T11:53:55.9621769Z           "complete": true,
2026-06-21T11:53:55.9621855Z           "evidence": [
2026-06-21T11:53:55.9621940Z             {
2026-06-21T11:53:55.9622060Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:55.9622146Z               "line": 857
2026-06-21T11:53:55.9622230Z             },
2026-06-21T11:53:55.9622307Z             {
2026-06-21T11:53:55.9622427Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.9622504Z               "line": 161
2026-06-21T11:53:55.9622588Z             },
2026-06-21T11:53:55.9622675Z             {
2026-06-21T11:53:55.9622779Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.9622869Z               "line": 233
2026-06-21T11:53:55.9622951Z             }
2026-06-21T11:53:55.9623038Z           ]
2026-06-21T11:53:55.9623132Z         }
2026-06-21T11:53:55.9623213Z       }
2026-06-21T11:53:55.9623300Z     },
2026-06-21T11:53:55.9623386Z     {
2026-06-21T11:53:55.9623490Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T11:53:55.9623903Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T11:53:55.9623994Z       "requiredStages": [
2026-06-21T11:53:55.9624083Z         "impl",
2026-06-21T11:53:55.9624164Z         "unit"
2026-06-21T11:53:55.9624240Z       ],
2026-06-21T11:53:55.9624317Z       "stages": {
2026-06-21T11:53:55.9624403Z         "doc": {
2026-06-21T11:53:55.9624488Z           "complete": true,
2026-06-21T11:53:55.9624583Z           "evidence": [
2026-06-21T11:53:55.9624665Z             {
2026-06-21T11:53:55.9624759Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9624845Z               "line": 220
2026-06-21T11:53:55.9624937Z             }
2026-06-21T11:53:55.9625022Z           ]
2026-06-21T11:53:55.9625102Z         },
2026-06-21T11:53:55.9625189Z         "impl": {
2026-06-21T11:53:55.9625303Z           "complete": true,
2026-06-21T11:53:55.9625385Z           "evidence": [
2026-06-21T11:53:55.9625465Z             {
2026-06-21T11:53:55.9625595Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:55.9625675Z               "line": 316
2026-06-21T11:53:55.9625756Z             },
2026-06-21T11:53:55.9625838Z             {
2026-06-21T11:53:55.9625961Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:55.9626047Z               "line": 356
2026-06-21T11:53:55.9626138Z             },
2026-06-21T11:53:55.9626220Z             {
2026-06-21T11:53:55.9626342Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:55.9626429Z               "line": 578
2026-06-21T11:53:55.9626521Z             },
2026-06-21T11:53:55.9626605Z             {
2026-06-21T11:53:55.9626723Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T11:53:55.9626899Z               "line": 77
2026-06-21T11:53:55.9627045Z             }
2026-06-21T11:53:55.9627135Z           ]
2026-06-21T11:53:55.9627222Z         },
2026-06-21T11:53:55.9627312Z         "int": {
2026-06-21T11:53:55.9627412Z           "complete": false,
2026-06-21T11:53:55.9627504Z           "evidence": []
2026-06-21T11:53:55.9627589Z         },
2026-06-21T11:53:55.9627669Z         "unit": {
2026-06-21T11:53:55.9627756Z           "complete": true,
2026-06-21T11:53:55.9627837Z           "evidence": [
2026-06-21T11:53:55.9627923Z             {
2026-06-21T11:53:55.9628036Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:55.9628119Z               "line": 747
2026-06-21T11:53:55.9628204Z             },
2026-06-21T11:53:55.9628285Z             {
2026-06-21T11:53:55.9628400Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:55.9628485Z               "line": 785
2026-06-21T11:53:55.9628575Z             },
2026-06-21T11:53:55.9628661Z             {
2026-06-21T11:53:55.9628763Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T11:53:55.9628852Z               "line": 166
2026-06-21T11:53:55.9628928Z             }
2026-06-21T11:53:55.9629092Z           ]
2026-06-21T11:53:55.9629167Z         }
2026-06-21T11:53:55.9629247Z       }
2026-06-21T11:53:55.9629332Z     },
2026-06-21T11:53:55.9629414Z     {
2026-06-21T11:53:55.9629545Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T11:53:55.9630089Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T11:53:55.9630189Z       "requiredStages": [
2026-06-21T11:53:55.9630274Z         "impl",
2026-06-21T11:53:55.9630352Z         "unit"
2026-06-21T11:53:55.9630437Z       ],
2026-06-21T11:53:55.9630523Z       "stages": {
2026-06-21T11:53:55.9630603Z         "doc": {
2026-06-21T11:53:55.9630690Z           "complete": false,
2026-06-21T11:53:55.9630785Z           "evidence": []
2026-06-21T11:53:55.9630875Z         },
2026-06-21T11:53:55.9630957Z         "impl": {
2026-06-21T11:53:55.9631043Z           "complete": true,
2026-06-21T11:53:55.9631123Z           "evidence": [
2026-06-21T11:53:55.9631204Z             {
2026-06-21T11:53:55.9631325Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T11:53:55.9631409Z               "line": 22
2026-06-21T11:53:55.9631500Z             },
2026-06-21T11:53:55.9631572Z             {
2026-06-21T11:53:55.9631682Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:55.9631772Z               "line": 487
2026-06-21T11:53:55.9631853Z             },
2026-06-21T11:53:55.9631926Z             {
2026-06-21T11:53:55.9632044Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T11:53:55.9632128Z               "line": 17
2026-06-21T11:53:55.9632209Z             },
2026-06-21T11:53:55.9632295Z             {
2026-06-21T11:53:55.9632410Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T11:53:55.9632505Z               "line": 147
2026-06-21T11:53:55.9632587Z             },
2026-06-21T11:53:55.9632673Z             {
2026-06-21T11:53:55.9632800Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:55.9632877Z               "line": 226
2026-06-21T11:53:55.9632959Z             },
2026-06-21T11:53:55.9633040Z             {
2026-06-21T11:53:55.9633163Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:55.9633250Z               "line": 251
2026-06-21T11:53:55.9633335Z             },
2026-06-21T11:53:55.9633416Z             {
2026-06-21T11:53:55.9633541Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:55.9633627Z               "line": 277
2026-06-21T11:53:55.9633707Z             },
2026-06-21T11:53:55.9633792Z             {
2026-06-21T11:53:55.9633903Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:55.9634092Z               "line": 124
2026-06-21T11:53:55.9634175Z             },
2026-06-21T11:53:55.9634331Z             {
2026-06-21T11:53:55.9634458Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:55.9634535Z               "line": 224
2026-06-21T11:53:55.9634620Z             }
2026-06-21T11:53:55.9634695Z           ]
2026-06-21T11:53:55.9634775Z         },
2026-06-21T11:53:55.9634862Z         "int": {
2026-06-21T11:53:55.9634958Z           "complete": false,
2026-06-21T11:53:55.9635043Z           "evidence": []
2026-06-21T11:53:55.9635124Z         },
2026-06-21T11:53:55.9635206Z         "unit": {
2026-06-21T11:53:55.9635296Z           "complete": true,
2026-06-21T11:53:55.9635381Z           "evidence": [
2026-06-21T11:53:55.9635463Z             {
2026-06-21T11:53:55.9635582Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T11:53:55.9635677Z               "line": 63
2026-06-21T11:53:55.9635754Z             },
2026-06-21T11:53:55.9635850Z             {
2026-06-21T11:53:55.9635968Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T11:53:55.9636063Z               "line": 73
2026-06-21T11:53:55.9636150Z             },
2026-06-21T11:53:55.9636235Z             {
2026-06-21T11:53:55.9636359Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T11:53:55.9636446Z               "line": 85
2026-06-21T11:53:55.9636526Z             },
2026-06-21T11:53:55.9636607Z             {
2026-06-21T11:53:55.9636723Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T11:53:55.9636813Z               "line": 346
2026-06-21T11:53:55.9636888Z             },
2026-06-21T11:53:55.9636965Z             {
2026-06-21T11:53:55.9637085Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T11:53:55.9637165Z               "line": 281
2026-06-21T11:53:55.9637245Z             },
2026-06-21T11:53:55.9637330Z             {
2026-06-21T11:53:55.9637450Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T11:53:55.9637548Z               "line": 322
2026-06-21T11:53:55.9637629Z             },
2026-06-21T11:53:55.9637720Z             {
2026-06-21T11:53:55.9637835Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T11:53:55.9637924Z               "line": 360
2026-06-21T11:53:55.9638011Z             },
2026-06-21T11:53:55.9638097Z             {
2026-06-21T11:53:55.9638210Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:55.9638306Z               "line": 688
2026-06-21T11:53:55.9638388Z             },
2026-06-21T11:53:55.9638474Z             {
2026-06-21T11:53:55.9638597Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:55.9638684Z               "line": 397
2026-06-21T11:53:55.9638773Z             },
2026-06-21T11:53:55.9638849Z             {
2026-06-21T11:53:55.9639046Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:55.9639121Z               "line": 440
2026-06-21T11:53:55.9639212Z             }
2026-06-21T11:53:55.9639299Z           ]
2026-06-21T11:53:55.9639375Z         }
2026-06-21T11:53:55.9639460Z       }
2026-06-21T11:53:55.9639546Z     },
2026-06-21T11:53:55.9639628Z     {
2026-06-21T11:53:55.9639732Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T11:53:55.9639955Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T11:53:55.9640054Z       "requiredStages": [
2026-06-21T11:53:55.9640134Z         "impl",
2026-06-21T11:53:55.9640219Z         "unit"
2026-06-21T11:53:55.9640301Z       ],
2026-06-21T11:53:55.9640387Z       "stages": {
2026-06-21T11:53:55.9640467Z         "doc": {
2026-06-21T11:53:55.9640567Z           "complete": false,
2026-06-21T11:53:55.9640664Z           "evidence": []
2026-06-21T11:53:55.9640740Z         },
2026-06-21T11:53:55.9640829Z         "impl": {
2026-06-21T11:53:55.9640922Z           "complete": true,
2026-06-21T11:53:55.9641007Z           "evidence": [
2026-06-21T11:53:55.9641087Z             {
2026-06-21T11:53:55.9641297Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T11:53:55.9641383Z               "line": 169
2026-06-21T11:53:55.9641551Z             }
2026-06-21T11:53:55.9641636Z           ]
2026-06-21T11:53:55.9641717Z         },
2026-06-21T11:53:55.9641802Z         "int": {
2026-06-21T11:53:55.9641894Z           "complete": true,
2026-06-21T11:53:55.9641979Z           "evidence": [
2026-06-21T11:53:55.9642060Z             {
2026-06-21T11:53:55.9642171Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T11:53:55.9642261Z               "line": 44
2026-06-21T11:53:55.9642336Z             },
2026-06-21T11:53:55.9642422Z             {
2026-06-21T11:53:55.9642529Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T11:53:55.9642618Z               "line": 66
2026-06-21T11:53:55.9642703Z             }
2026-06-21T11:53:55.9642784Z           ]
2026-06-21T11:53:55.9642870Z         },
2026-06-21T11:53:55.9642947Z         "unit": {
2026-06-21T11:53:55.9643041Z           "complete": true,
2026-06-21T11:53:55.9643127Z           "evidence": [
2026-06-21T11:53:55.9643209Z             {
2026-06-21T11:53:55.9643323Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T11:53:55.9643408Z               "line": 186
2026-06-21T11:53:55.9643495Z             },
2026-06-21T11:53:55.9643576Z             {
2026-06-21T11:53:55.9643685Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T11:53:55.9643776Z               "line": 238
2026-06-21T11:53:55.9643862Z             },
2026-06-21T11:53:55.9643948Z             {
2026-06-21T11:53:55.9644052Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T11:53:55.9644144Z               "line": 266
2026-06-21T11:53:55.9644229Z             }
2026-06-21T11:53:55.9644310Z           ]
2026-06-21T11:53:55.9644386Z         }
2026-06-21T11:53:55.9644473Z       }
2026-06-21T11:53:55.9644558Z     },
2026-06-21T11:53:55.9644629Z     {
2026-06-21T11:53:55.9644750Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T11:53:55.9649147Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T11:53:55.9649277Z       "requiredStages": [],
2026-06-21T11:53:55.9649357Z       "stages": {
2026-06-21T11:53:55.9649438Z         "doc": {
2026-06-21T11:53:55.9649530Z           "complete": false,
2026-06-21T11:53:55.9649625Z           "evidence": []
2026-06-21T11:53:55.9649705Z         },
2026-06-21T11:53:55.9649787Z         "impl": {
2026-06-21T11:53:55.9649878Z           "complete": false,
2026-06-21T11:53:55.9649968Z           "evidence": []
2026-06-21T11:53:55.9650053Z         },
2026-06-21T11:53:55.9650135Z         "int": {
2026-06-21T11:53:55.9650349Z           "complete": false,
2026-06-21T11:53:55.9650433Z           "evidence": []
2026-06-21T11:53:55.9650515Z         },
2026-06-21T11:53:55.9650689Z         "unit": {
2026-06-21T11:53:55.9650774Z           "complete": false,
2026-06-21T11:53:55.9650856Z           "evidence": []
2026-06-21T11:53:55.9650938Z         }
2026-06-21T11:53:55.9651027Z       }
2026-06-21T11:53:55.9651109Z     },
2026-06-21T11:53:55.9651190Z     {
2026-06-21T11:53:55.9651318Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T11:53:55.9665430Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T11:53:55.9665836Z       "requiredStages": [
2026-06-21T11:53:55.9665922Z         "doc",
2026-06-21T11:53:55.9666002Z         "impl",
2026-06-21T11:53:55.9666087Z         "unit",
2026-06-21T11:53:55.9666173Z         "int"
2026-06-21T11:53:55.9666263Z       ],
2026-06-21T11:53:55.9666347Z       "stages": {
2026-06-21T11:53:55.9666442Z         "doc": {
2026-06-21T11:53:55.9666533Z           "complete": true,
2026-06-21T11:53:55.9666625Z           "evidence": [
2026-06-21T11:53:55.9666700Z             {
2026-06-21T11:53:55.9666814Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9666906Z               "line": 468
2026-06-21T11:53:55.9666991Z             }
2026-06-21T11:53:55.9667081Z           ]
2026-06-21T11:53:55.9667163Z         },
2026-06-21T11:53:55.9667253Z         "impl": {
2026-06-21T11:53:55.9667339Z           "complete": true,
2026-06-21T11:53:55.9667439Z           "evidence": [
2026-06-21T11:53:55.9667525Z             {
2026-06-21T11:53:55.9670393Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9670526Z               "line": 348
2026-06-21T11:53:55.9670616Z             },
2026-06-21T11:53:55.9670688Z             {
2026-06-21T11:53:55.9670825Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9670916Z               "line": 1228
2026-06-21T11:53:55.9670998Z             },
2026-06-21T11:53:55.9671079Z             {
2026-06-21T11:53:55.9671207Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9671294Z               "line": 836
2026-06-21T11:53:55.9671375Z             }
2026-06-21T11:53:55.9671454Z           ]
2026-06-21T11:53:55.9671535Z         },
2026-06-21T11:53:55.9671616Z         "int": {
2026-06-21T11:53:55.9671711Z           "complete": true,
2026-06-21T11:53:55.9671814Z           "evidence": [
2026-06-21T11:53:55.9671890Z             {
2026-06-21T11:53:55.9672010Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:55.9672110Z               "line": 1163
2026-06-21T11:53:55.9672200Z             },
2026-06-21T11:53:55.9672282Z             {
2026-06-21T11:53:55.9672397Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:55.9672486Z               "line": 1264
2026-06-21T11:53:55.9672568Z             },
2026-06-21T11:53:55.9672649Z             {
2026-06-21T11:53:55.9672763Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:55.9672848Z               "line": 1169
2026-06-21T11:53:55.9672931Z             }
2026-06-21T11:53:55.9673015Z           ]
2026-06-21T11:53:55.9673096Z         },
2026-06-21T11:53:55.9673187Z         "unit": {
2026-06-21T11:53:55.9673279Z           "complete": true,
2026-06-21T11:53:55.9673364Z           "evidence": [
2026-06-21T11:53:55.9673445Z             {
2026-06-21T11:53:55.9673697Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9673793Z               "line": 3091
2026-06-21T11:53:55.9673965Z             }
2026-06-21T11:53:55.9674046Z           ]
2026-06-21T11:53:55.9674122Z         }
2026-06-21T11:53:55.9674204Z       }
2026-06-21T11:53:55.9674298Z     },
2026-06-21T11:53:55.9674379Z     {
2026-06-21T11:53:55.9674507Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T11:53:55.9674937Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T11:53:55.9675036Z       "requiredStages": [
2026-06-21T11:53:55.9675118Z         "impl",
2026-06-21T11:53:55.9675209Z         "unit",
2026-06-21T11:53:55.9675299Z         "int"
2026-06-21T11:53:55.9675380Z       ],
2026-06-21T11:53:55.9675466Z       "stages": {
2026-06-21T11:53:55.9675547Z         "doc": {
2026-06-21T11:53:55.9675642Z           "complete": false,
2026-06-21T11:53:55.9675732Z           "evidence": []
2026-06-21T11:53:55.9675815Z         },
2026-06-21T11:53:55.9675895Z         "impl": {
2026-06-21T11:53:55.9675990Z           "complete": true,
2026-06-21T11:53:55.9676072Z           "evidence": [
2026-06-21T11:53:55.9676153Z             {
2026-06-21T11:53:55.9676285Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9676376Z               "line": 178
2026-06-21T11:53:55.9676463Z             },
2026-06-21T11:53:55.9676552Z             {
2026-06-21T11:53:55.9676671Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9676762Z               "line": 226
2026-06-21T11:53:55.9676832Z             },
2026-06-21T11:53:55.9676917Z             {
2026-06-21T11:53:55.9677031Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:55.9677122Z               "line": 79
2026-06-21T11:53:55.9677217Z             },
2026-06-21T11:53:55.9677297Z             {
2026-06-21T11:53:55.9677403Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:55.9677489Z               "line": 52
2026-06-21T11:53:55.9677579Z             },
2026-06-21T11:53:55.9677665Z             {
2026-06-21T11:53:55.9677771Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9677861Z               "line": 263
2026-06-21T11:53:55.9677941Z             },
2026-06-21T11:53:55.9678029Z             {
2026-06-21T11:53:55.9678128Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9678228Z               "line": 27
2026-06-21T11:53:55.9678314Z             },
2026-06-21T11:53:55.9678395Z             {
2026-06-21T11:53:55.9678514Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9678594Z               "line": 79
2026-06-21T11:53:55.9678682Z             },
2026-06-21T11:53:55.9678753Z             {
2026-06-21T11:53:55.9678872Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9679030Z               "line": 102
2026-06-21T11:53:55.9679124Z             },
2026-06-21T11:53:55.9679210Z             {
2026-06-21T11:53:55.9679321Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:55.9679420Z               "line": 116
2026-06-21T11:53:55.9679490Z             }
2026-06-21T11:53:55.9679576Z           ]
2026-06-21T11:53:55.9679662Z         },
2026-06-21T11:53:55.9679737Z         "int": {
2026-06-21T11:53:55.9679826Z           "complete": true,
2026-06-21T11:53:55.9679907Z           "evidence": [
2026-06-21T11:53:55.9679979Z             {
2026-06-21T11:53:55.9680103Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T11:53:55.9680184Z               "line": 43
2026-06-21T11:53:55.9680271Z             }
2026-06-21T11:53:55.9680352Z           ]
2026-06-21T11:53:55.9680437Z         },
2026-06-21T11:53:55.9680522Z         "unit": {
2026-06-21T11:53:55.9680609Z           "complete": true,
2026-06-21T11:53:55.9680695Z           "evidence": [
2026-06-21T11:53:55.9680775Z             {
2026-06-21T11:53:55.9681100Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9681185Z               "line": 678
2026-06-21T11:53:55.9681462Z             },
2026-06-21T11:53:55.9681558Z             {
2026-06-21T11:53:55.9681676Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9681767Z               "line": 495
2026-06-21T11:53:55.9681850Z             },
2026-06-21T11:53:55.9681959Z             {
2026-06-21T11:53:55.9682100Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9682195Z               "line": 124
2026-06-21T11:53:55.9682276Z             },
2026-06-21T11:53:55.9682360Z             {
2026-06-21T11:53:55.9682469Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9682561Z               "line": 143
2026-06-21T11:53:55.9682647Z             },
2026-06-21T11:53:55.9682727Z             {
2026-06-21T11:53:55.9682852Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9682947Z               "line": 160
2026-06-21T11:53:55.9683041Z             },
2026-06-21T11:53:55.9683123Z             {
2026-06-21T11:53:55.9683237Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9683328Z               "line": 187
2026-06-21T11:53:55.9683409Z             },
2026-06-21T11:53:55.9683491Z             {
2026-06-21T11:53:55.9683604Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T11:53:55.9683690Z               "line": 206
2026-06-21T11:53:55.9683772Z             },
2026-06-21T11:53:55.9683858Z             {
2026-06-21T11:53:55.9683967Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:55.9684053Z               "line": 229
2026-06-21T11:53:55.9684125Z             }
2026-06-21T11:53:55.9684210Z           ]
2026-06-21T11:53:55.9684296Z         }
2026-06-21T11:53:55.9684377Z       }
2026-06-21T11:53:55.9684469Z     },
2026-06-21T11:53:55.9684548Z     {
2026-06-21T11:53:55.9684663Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T11:53:55.9685305Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T11:53:55.9685406Z       "requiredStages": [
2026-06-21T11:53:55.9685497Z         "impl",
2026-06-21T11:53:55.9685596Z         "unit"
2026-06-21T11:53:55.9685678Z       ],
2026-06-21T11:53:55.9685759Z       "stages": {
2026-06-21T11:53:55.9685836Z         "doc": {
2026-06-21T11:53:55.9685935Z           "complete": false,
2026-06-21T11:53:55.9686021Z           "evidence": []
2026-06-21T11:53:55.9686116Z         },
2026-06-21T11:53:55.9686202Z         "impl": {
2026-06-21T11:53:55.9686297Z           "complete": true,
2026-06-21T11:53:55.9686389Z           "evidence": [
2026-06-21T11:53:55.9686469Z             {
2026-06-21T11:53:55.9686593Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9686680Z               "line": 1300
2026-06-21T11:53:55.9686779Z             },
2026-06-21T11:53:55.9686855Z             {
2026-06-21T11:53:55.9686985Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9687075Z               "line": 1556
2026-06-21T11:53:55.9687155Z             }
2026-06-21T11:53:55.9687240Z           ]
2026-06-21T11:53:55.9687327Z         },
2026-06-21T11:53:55.9687411Z         "int": {
2026-06-21T11:53:55.9687515Z           "complete": false,
2026-06-21T11:53:55.9687591Z           "evidence": []
2026-06-21T11:53:55.9687677Z         },
2026-06-21T11:53:55.9687759Z         "unit": {
2026-06-21T11:53:55.9687858Z           "complete": true,
2026-06-21T11:53:55.9687934Z           "evidence": [
2026-06-21T11:53:55.9688021Z             {
2026-06-21T11:53:55.9688149Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T11:53:55.9688230Z               "line": 161
2026-06-21T11:53:55.9688312Z             }
2026-06-21T11:53:55.9688397Z           ]
2026-06-21T11:53:55.9688569Z         }
2026-06-21T11:53:55.9688650Z       }
2026-06-21T11:53:55.9688731Z     },
2026-06-21T11:53:55.9688812Z     {
2026-06-21T11:53:55.9689074Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T11:53:55.9690859Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T11:53:55.9690960Z       "requiredStages": [
2026-06-21T11:53:55.9691049Z         "impl",
2026-06-21T11:53:55.9691131Z         "unit"
2026-06-21T11:53:55.9691217Z       ],
2026-06-21T11:53:55.9691317Z       "stages": {
2026-06-21T11:53:55.9691392Z         "doc": {
2026-06-21T11:53:55.9691489Z           "complete": false,
2026-06-21T11:53:55.9691593Z           "evidence": []
2026-06-21T11:53:55.9691674Z         },
2026-06-21T11:53:55.9691760Z         "impl": {
2026-06-21T11:53:55.9691842Z           "complete": true,
2026-06-21T11:53:55.9691927Z           "evidence": [
2026-06-21T11:53:55.9692008Z             {
2026-06-21T11:53:55.9692137Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:55.9692227Z               "line": 257
2026-06-21T11:53:55.9692309Z             }
2026-06-21T11:53:55.9692390Z           ]
2026-06-21T11:53:55.9692476Z         },
2026-06-21T11:53:55.9692561Z         "int": {
2026-06-21T11:53:55.9692641Z           "complete": false,
2026-06-21T11:53:55.9692732Z           "evidence": []
2026-06-21T11:53:55.9692822Z         },
2026-06-21T11:53:55.9692897Z         "unit": {
2026-06-21T11:53:55.9692991Z           "complete": true,
2026-06-21T11:53:55.9693087Z           "evidence": [
2026-06-21T11:53:55.9693169Z             {
2026-06-21T11:53:55.9693291Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:55.9693388Z               "line": 360
2026-06-21T11:53:55.9693478Z             }
2026-06-21T11:53:55.9693559Z           ]
2026-06-21T11:53:55.9693645Z         }
2026-06-21T11:53:55.9693727Z       }
2026-06-21T11:53:55.9693807Z     },
2026-06-21T11:53:55.9693888Z     {
2026-06-21T11:53:55.9693998Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T11:53:55.9695813Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T11:53:55.9695928Z       "requiredStages": [
2026-06-21T11:53:55.9696019Z         "impl",
2026-06-21T11:53:55.9696104Z         "unit"
2026-06-21T11:53:55.9696180Z       ],
2026-06-21T11:53:55.9696262Z       "stages": {
2026-06-21T11:53:55.9696348Z         "doc": {
2026-06-21T11:53:55.9696433Z           "complete": false,
2026-06-21T11:53:55.9696519Z           "evidence": []
2026-06-21T11:53:55.9696611Z         },
2026-06-21T11:53:55.9696696Z         "impl": {
2026-06-21T11:53:55.9696795Z           "complete": true,
2026-06-21T11:53:55.9696892Z           "evidence": [
2026-06-21T11:53:55.9696973Z             {
2026-06-21T11:53:55.9697100Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9697192Z               "line": 1018
2026-06-21T11:53:55.9697269Z             },
2026-06-21T11:53:55.9697353Z             {
2026-06-21T11:53:55.9697574Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9697663Z               "line": 283
2026-06-21T11:53:55.9697829Z             },
2026-06-21T11:53:55.9697915Z             {
2026-06-21T11:53:55.9698027Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9698122Z               "line": 316
2026-06-21T11:53:55.9698204Z             },
2026-06-21T11:53:55.9698291Z             {
2026-06-21T11:53:55.9698409Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T11:53:55.9698499Z               "line": 26
2026-06-21T11:53:55.9698581Z             }
2026-06-21T11:53:55.9698661Z           ]
2026-06-21T11:53:55.9698742Z         },
2026-06-21T11:53:55.9698829Z         "int": {
2026-06-21T11:53:55.9698914Z           "complete": false,
2026-06-21T11:53:55.9699080Z           "evidence": []
2026-06-21T11:53:55.9699163Z         },
2026-06-21T11:53:55.9699248Z         "unit": {
2026-06-21T11:53:55.9699338Z           "complete": true,
2026-06-21T11:53:55.9699439Z           "evidence": [
2026-06-21T11:53:55.9699525Z             {
2026-06-21T11:53:55.9699629Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T11:53:55.9699719Z               "line": 271
2026-06-21T11:53:55.9699802Z             },
2026-06-21T11:53:55.9699887Z             {
2026-06-21T11:53:55.9699987Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T11:53:55.9700074Z               "line": 348
2026-06-21T11:53:55.9700155Z             }
2026-06-21T11:53:55.9700234Z           ]
2026-06-21T11:53:55.9700321Z         }
2026-06-21T11:53:55.9700403Z       }
2026-06-21T11:53:55.9700479Z     },
2026-06-21T11:53:55.9700563Z     {
2026-06-21T11:53:55.9700677Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T11:53:55.9700862Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T11:53:55.9700961Z       "requiredStages": [
2026-06-21T11:53:55.9701047Z         "impl",
2026-06-21T11:53:55.9701138Z         "unit"
2026-06-21T11:53:55.9701233Z       ],
2026-06-21T11:53:55.9701318Z       "stages": {
2026-06-21T11:53:55.9701405Z         "doc": {
2026-06-21T11:53:55.9701510Z           "complete": false,
2026-06-21T11:53:55.9701590Z           "evidence": []
2026-06-21T11:53:55.9701676Z         },
2026-06-21T11:53:55.9701758Z         "impl": {
2026-06-21T11:53:55.9701853Z           "complete": true,
2026-06-21T11:53:55.9701938Z           "evidence": [
2026-06-21T11:53:55.9702015Z             {
2026-06-21T11:53:55.9702139Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9702225Z               "line": 40
2026-06-21T11:53:55.9702306Z             },
2026-06-21T11:53:55.9702388Z             {
2026-06-21T11:53:55.9702492Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9702573Z               "line": 103
2026-06-21T11:53:55.9702665Z             },
2026-06-21T11:53:55.9702750Z             {
2026-06-21T11:53:55.9702849Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9702941Z               "line": 218
2026-06-21T11:53:55.9703013Z             },
2026-06-21T11:53:55.9703102Z             {
2026-06-21T11:53:55.9703215Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9703306Z               "line": 323
2026-06-21T11:53:55.9703387Z             }
2026-06-21T11:53:55.9703466Z           ]
2026-06-21T11:53:55.9703542Z         },
2026-06-21T11:53:55.9703628Z         "int": {
2026-06-21T11:53:55.9703719Z           "complete": false,
2026-06-21T11:53:55.9703805Z           "evidence": []
2026-06-21T11:53:55.9703890Z         },
2026-06-21T11:53:55.9703967Z         "unit": {
2026-06-21T11:53:55.9704052Z           "complete": true,
2026-06-21T11:53:55.9704143Z           "evidence": [
2026-06-21T11:53:55.9704228Z             {
2026-06-21T11:53:55.9704334Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9704420Z               "line": 361
2026-06-21T11:53:55.9704505Z             },
2026-06-21T11:53:55.9704587Z             {
2026-06-21T11:53:55.9704829Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9704916Z               "line": 433
2026-06-21T11:53:55.9705092Z             },
2026-06-21T11:53:55.9705178Z             {
2026-06-21T11:53:55.9705284Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9705377Z               "line": 496
2026-06-21T11:53:55.9705459Z             },
2026-06-21T11:53:55.9705537Z             {
2026-06-21T11:53:55.9705645Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9705736Z               "line": 517
2026-06-21T11:53:55.9705822Z             }
2026-06-21T11:53:55.9705908Z           ]
2026-06-21T11:53:55.9705993Z         }
2026-06-21T11:53:55.9706087Z       }
2026-06-21T11:53:55.9706168Z     },
2026-06-21T11:53:55.9706255Z     {
2026-06-21T11:53:55.9706368Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T11:53:55.9708691Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T11:53:55.9708812Z       "requiredStages": [
2026-06-21T11:53:55.9708897Z         "impl",
2026-06-21T11:53:55.9709074Z         "unit"
2026-06-21T11:53:55.9709155Z       ],
2026-06-21T11:53:55.9709236Z       "stages": {
2026-06-21T11:53:55.9709321Z         "doc": {
2026-06-21T11:53:55.9709413Z           "complete": false,
2026-06-21T11:53:55.9709518Z           "evidence": []
2026-06-21T11:53:55.9709598Z         },
2026-06-21T11:53:55.9709689Z         "impl": {
2026-06-21T11:53:55.9709789Z           "complete": true,
2026-06-21T11:53:55.9709875Z           "evidence": [
2026-06-21T11:53:55.9709951Z             {
2026-06-21T11:53:55.9710081Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:55.9710171Z               "line": 402
2026-06-21T11:53:55.9710247Z             },
2026-06-21T11:53:55.9710338Z             {
2026-06-21T11:53:55.9710466Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:55.9710552Z               "line": 446
2026-06-21T11:53:55.9710634Z             }
2026-06-21T11:53:55.9710715Z           ]
2026-06-21T11:53:55.9710809Z         },
2026-06-21T11:53:55.9710886Z         "int": {
2026-06-21T11:53:55.9710982Z           "complete": false,
2026-06-21T11:53:55.9711077Z           "evidence": []
2026-06-21T11:53:55.9711161Z         },
2026-06-21T11:53:55.9711251Z         "unit": {
2026-06-21T11:53:55.9711347Z           "complete": true,
2026-06-21T11:53:55.9711436Z           "evidence": [
2026-06-21T11:53:55.9711526Z             {
2026-06-21T11:53:55.9711646Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:55.9711736Z               "line": 910
2026-06-21T11:53:55.9711817Z             }
2026-06-21T11:53:55.9711902Z           ]
2026-06-21T11:53:55.9711989Z         }
2026-06-21T11:53:55.9712075Z       }
2026-06-21T11:53:55.9712160Z     },
2026-06-21T11:53:55.9712241Z     {
2026-06-21T11:53:55.9712361Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T11:53:55.9712484Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T11:53:55.9712580Z       "requiredStages": [
2026-06-21T11:53:55.9712661Z         "impl",
2026-06-21T11:53:55.9712742Z         "unit"
2026-06-21T11:53:55.9712827Z       ],
2026-06-21T11:53:55.9712910Z       "stages": {
2026-06-21T11:53:55.9712995Z         "doc": {
2026-06-21T11:53:55.9713080Z           "complete": false,
2026-06-21T11:53:55.9713286Z           "evidence": []
2026-06-21T11:53:55.9713366Z         },
2026-06-21T11:53:55.9713549Z         "impl": {
2026-06-21T11:53:55.9713639Z           "complete": true,
2026-06-21T11:53:55.9713733Z           "evidence": [
2026-06-21T11:53:55.9713818Z             {
2026-06-21T11:53:55.9713942Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9714041Z               "line": 116
2026-06-21T11:53:55.9714116Z             },
2026-06-21T11:53:55.9714203Z             {
2026-06-21T11:53:55.9714313Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9714411Z               "line": 211
2026-06-21T11:53:55.9714488Z             }
2026-06-21T11:53:55.9714575Z           ]
2026-06-21T11:53:55.9714661Z         },
2026-06-21T11:53:55.9714745Z         "int": {
2026-06-21T11:53:55.9714851Z           "complete": false,
2026-06-21T11:53:55.9714937Z           "evidence": []
2026-06-21T11:53:55.9715022Z         },
2026-06-21T11:53:55.9715113Z         "unit": {
2026-06-21T11:53:55.9715195Z           "complete": true,
2026-06-21T11:53:55.9715294Z           "evidence": [
2026-06-21T11:53:55.9715380Z             {
2026-06-21T11:53:55.9715495Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9715576Z               "line": 388
2026-06-21T11:53:55.9715662Z             },
2026-06-21T11:53:55.9715748Z             {
2026-06-21T11:53:55.9715853Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:55.9715937Z               "line": 469
2026-06-21T11:53:55.9716019Z             }
2026-06-21T11:53:55.9716111Z           ]
2026-06-21T11:53:55.9716191Z         }
2026-06-21T11:53:55.9716281Z       }
2026-06-21T11:53:55.9716368Z     },
2026-06-21T11:53:55.9716445Z     {
2026-06-21T11:53:55.9716576Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T11:53:55.9717658Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T11:53:55.9717773Z       "requiredStages": [
2026-06-21T11:53:55.9717859Z         "impl",
2026-06-21T11:53:55.9717944Z         "unit"
2026-06-21T11:53:55.9718031Z       ],
2026-06-21T11:53:55.9718112Z       "stages": {
2026-06-21T11:53:55.9718198Z         "doc": {
2026-06-21T11:53:55.9718283Z           "complete": true,
2026-06-21T11:53:55.9718365Z           "evidence": [
2026-06-21T11:53:55.9718446Z             {
2026-06-21T11:53:55.9718550Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9718636Z               "line": 206
2026-06-21T11:53:55.9718723Z             }
2026-06-21T11:53:55.9718811Z           ]
2026-06-21T11:53:55.9718897Z         },
2026-06-21T11:53:55.9719069Z         "impl": {
2026-06-21T11:53:55.9719162Z           "complete": true,
2026-06-21T11:53:55.9719266Z           "evidence": [
2026-06-21T11:53:55.9719348Z             {
2026-06-21T11:53:55.9719472Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9719571Z               "line": 691
2026-06-21T11:53:55.9719653Z             },
2026-06-21T11:53:55.9719739Z             {
2026-06-21T11:53:55.9719858Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9719944Z               "line": 791
2026-06-21T11:53:55.9720034Z             },
2026-06-21T11:53:55.9720115Z             {
2026-06-21T11:53:55.9720240Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9720326Z               "line": 1120
2026-06-21T11:53:55.9720412Z             },
2026-06-21T11:53:55.9720496Z             {
2026-06-21T11:53:55.9720622Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:55.9720711Z               "line": 184
2026-06-21T11:53:55.9720787Z             }
2026-06-21T11:53:55.9720879Z           ]
2026-06-21T11:53:55.9721064Z         },
2026-06-21T11:53:55.9721145Z         "int": {
2026-06-21T11:53:55.9721247Z           "complete": false,
2026-06-21T11:53:55.9721446Z           "evidence": []
2026-06-21T11:53:55.9721528Z         },
2026-06-21T11:53:55.9721614Z         "unit": {
2026-06-21T11:53:55.9721712Z           "complete": true,
2026-06-21T11:53:55.9721802Z           "evidence": [
2026-06-21T11:53:55.9721893Z             {
2026-06-21T11:53:55.9722014Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9722105Z               "line": 1169
2026-06-21T11:53:55.9722186Z             },
2026-06-21T11:53:55.9722268Z             {
2026-06-21T11:53:55.9722401Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T11:53:55.9722487Z               "line": 44
2026-06-21T11:53:55.9722573Z             },
2026-06-21T11:53:55.9722654Z             {
2026-06-21T11:53:55.9722777Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T11:53:55.9722860Z               "line": 52
2026-06-21T11:53:55.9722940Z             },
2026-06-21T11:53:55.9723030Z             {
2026-06-21T11:53:55.9723145Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T11:53:55.9723240Z               "line": 57
2026-06-21T11:53:55.9723326Z             },
2026-06-21T11:53:55.9723407Z             {
2026-06-21T11:53:55.9723546Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T11:53:55.9723631Z               "line": 54
2026-06-21T11:53:55.9723717Z             }
2026-06-21T11:53:55.9723804Z           ]
2026-06-21T11:53:55.9723884Z         }
2026-06-21T11:53:55.9723969Z       }
2026-06-21T11:53:55.9724056Z     },
2026-06-21T11:53:55.9724133Z     {
2026-06-21T11:53:55.9724246Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T11:53:55.9724465Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T11:53:55.9724553Z       "requiredStages": [
2026-06-21T11:53:55.9724643Z         "impl",
2026-06-21T11:53:55.9724729Z         "unit"
2026-06-21T11:53:55.9724816Z       ],
2026-06-21T11:53:55.9724910Z       "stages": {
2026-06-21T11:53:55.9724995Z         "doc": {
2026-06-21T11:53:55.9725111Z           "complete": false,
2026-06-21T11:53:55.9725202Z           "evidence": []
2026-06-21T11:53:55.9725291Z         },
2026-06-21T11:53:55.9725373Z         "impl": {
2026-06-21T11:53:55.9725459Z           "complete": true,
2026-06-21T11:53:55.9725559Z           "evidence": [
2026-06-21T11:53:55.9725639Z             {
2026-06-21T11:53:55.9725764Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9725849Z               "line": 26
2026-06-21T11:53:55.9725930Z             },
2026-06-21T11:53:55.9726017Z             {
2026-06-21T11:53:55.9726127Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9726222Z               "line": 135
2026-06-21T11:53:55.9726303Z             },
2026-06-21T11:53:55.9726389Z             {
2026-06-21T11:53:55.9726517Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T11:53:55.9726618Z               "line": 26
2026-06-21T11:53:55.9726704Z             },
2026-06-21T11:53:55.9726793Z             {
2026-06-21T11:53:55.9726923Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T11:53:55.9727014Z               "line": 237
2026-06-21T11:53:55.9727090Z             }
2026-06-21T11:53:55.9727165Z           ]
2026-06-21T11:53:55.9727250Z         },
2026-06-21T11:53:55.9727336Z         "int": {
2026-06-21T11:53:55.9727433Z           "complete": false,
2026-06-21T11:53:55.9727531Z           "evidence": []
2026-06-21T11:53:55.9727613Z         },
2026-06-21T11:53:55.9727700Z         "unit": {
2026-06-21T11:53:55.9727785Z           "complete": true,
2026-06-21T11:53:55.9727870Z           "evidence": [
2026-06-21T11:53:55.9727957Z             {
2026-06-21T11:53:55.9728066Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9728156Z               "line": 161
2026-06-21T11:53:55.9728237Z             },
2026-06-21T11:53:55.9728399Z             {
2026-06-21T11:53:55.9728514Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9728672Z               "line": 170
2026-06-21T11:53:55.9728758Z             },
2026-06-21T11:53:55.9728838Z             {
2026-06-21T11:53:55.9729034Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9729106Z               "line": 179
2026-06-21T11:53:55.9729191Z             },
2026-06-21T11:53:55.9729274Z             {
2026-06-21T11:53:55.9729377Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9729462Z               "line": 190
2026-06-21T11:53:55.9729543Z             },
2026-06-21T11:53:55.9729624Z             {
2026-06-21T11:53:55.9729726Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9729812Z               "line": 199
2026-06-21T11:53:55.9729894Z             },
2026-06-21T11:53:55.9729976Z             {
2026-06-21T11:53:55.9730079Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9730175Z               "line": 216
2026-06-21T11:53:55.9730266Z             },
2026-06-21T11:53:55.9730342Z             {
2026-06-21T11:53:55.9730465Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T11:53:55.9730557Z               "line": 242
2026-06-21T11:53:55.9730638Z             },
2026-06-21T11:53:55.9730718Z             {
2026-06-21T11:53:55.9730819Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:55.9730910Z               "line": 295
2026-06-21T11:53:55.9730995Z             },
2026-06-21T11:53:55.9731086Z             {
2026-06-21T11:53:55.9731201Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:55.9731296Z               "line": 244
2026-06-21T11:53:55.9731386Z             },
2026-06-21T11:53:55.9731468Z             {
2026-06-21T11:53:55.9731600Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T11:53:55.9731681Z               "line": 265
2026-06-21T11:53:55.9731769Z             },
2026-06-21T11:53:55.9731864Z             {
2026-06-21T11:53:55.9731973Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T11:53:55.9732074Z               "line": 293
2026-06-21T11:53:55.9732150Z             },
2026-06-21T11:53:55.9732234Z             {
2026-06-21T11:53:55.9732357Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T11:53:55.9732443Z               "line": 317
2026-06-21T11:53:55.9732524Z             },
2026-06-21T11:53:55.9732613Z             {
2026-06-21T11:53:55.9732728Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T11:53:55.9732814Z               "line": 327
2026-06-21T11:53:55.9732899Z             },
2026-06-21T11:53:55.9732975Z             {
2026-06-21T11:53:55.9733100Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:55.9733195Z               "line": 540
2026-06-21T11:53:55.9733270Z             }
2026-06-21T11:53:55.9733357Z           ]
2026-06-21T11:53:55.9733429Z         }
2026-06-21T11:53:55.9733515Z       }
2026-06-21T11:53:55.9733609Z     },
2026-06-21T11:53:55.9733700Z     {
2026-06-21T11:53:55.9733829Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T11:53:55.9738636Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T11:53:55.9739050Z       "requiredStages": [],
2026-06-21T11:53:55.9739142Z       "stages": {
2026-06-21T11:53:55.9739228Z         "doc": {
2026-06-21T11:53:55.9739323Z           "complete": false,
2026-06-21T11:53:55.9739423Z           "evidence": []
2026-06-21T11:53:55.9739499Z         },
2026-06-21T11:53:55.9739585Z         "impl": {
2026-06-21T11:53:55.9739684Z           "complete": false,
2026-06-21T11:53:55.9739771Z           "evidence": []
2026-06-21T11:53:55.9739848Z         },
2026-06-21T11:53:55.9739932Z         "int": {
2026-06-21T11:53:55.9740022Z           "complete": false,
2026-06-21T11:53:55.9740108Z           "evidence": []
2026-06-21T11:53:55.9740193Z         },
2026-06-21T11:53:55.9740287Z         "unit": {
2026-06-21T11:53:55.9740363Z           "complete": false,
2026-06-21T11:53:55.9740463Z           "evidence": []
2026-06-21T11:53:55.9740541Z         }
2026-06-21T11:53:55.9740625Z       }
2026-06-21T11:53:55.9740706Z     },
2026-06-21T11:53:55.9740788Z     {
2026-06-21T11:53:55.9740907Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T11:53:55.9742452Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T11:53:55.9742552Z       "requiredStages": [
2026-06-21T11:53:55.9742634Z         "impl",
2026-06-21T11:53:55.9742720Z         "unit",
2026-06-21T11:53:55.9742813Z         "int"
2026-06-21T11:53:55.9742894Z       ],
2026-06-21T11:53:55.9742975Z       "stages": {
2026-06-21T11:53:55.9743061Z         "doc": {
2026-06-21T11:53:55.9743158Z           "complete": false,
2026-06-21T11:53:55.9743239Z           "evidence": []
2026-06-21T11:53:55.9743326Z         },
2026-06-21T11:53:55.9743407Z         "impl": {
2026-06-21T11:53:55.9743497Z           "complete": true,
2026-06-21T11:53:55.9743582Z           "evidence": [
2026-06-21T11:53:55.9743665Z             {
2026-06-21T11:53:55.9743797Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9743888Z               "line": 538
2026-06-21T11:53:55.9743965Z             },
2026-06-21T11:53:55.9744046Z             {
2026-06-21T11:53:55.9744164Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9744261Z               "line": 641
2026-06-21T11:53:55.9744328Z             },
2026-06-21T11:53:55.9744408Z             {
2026-06-21T11:53:55.9744546Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T11:53:55.9744647Z               "line": 21
2026-06-21T11:53:55.9744736Z             }
2026-06-21T11:53:55.9744813Z           ]
2026-06-21T11:53:55.9744900Z         },
2026-06-21T11:53:55.9744985Z         "int": {
2026-06-21T11:53:55.9745075Z           "complete": true,
2026-06-21T11:53:55.9745157Z           "evidence": [
2026-06-21T11:53:55.9745249Z             {
2026-06-21T11:53:55.9745385Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T11:53:55.9745585Z               "line": 236
2026-06-21T11:53:55.9745745Z             },
2026-06-21T11:53:55.9745830Z             {
2026-06-21T11:53:55.9745974Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T11:53:55.9746073Z               "line": 396
2026-06-21T11:53:55.9746155Z             },
2026-06-21T11:53:55.9748858Z             {
2026-06-21T11:53:55.9749130Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:55.9749229Z               "line": 1496
2026-06-21T11:53:55.9749309Z             },
2026-06-21T11:53:55.9749397Z             {
2026-06-21T11:53:55.9749563Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:55.9749653Z               "line": 1648
2026-06-21T11:53:55.9749735Z             }
2026-06-21T11:53:55.9749820Z           ]
2026-06-21T11:53:55.9749906Z         },
2026-06-21T11:53:55.9749983Z         "unit": {
2026-06-21T11:53:55.9750097Z           "complete": true,
2026-06-21T11:53:55.9750192Z           "evidence": [
2026-06-21T11:53:55.9750273Z             {
2026-06-21T11:53:55.9750408Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9750488Z               "line": 887
2026-06-21T11:53:55.9750568Z             }
2026-06-21T11:53:55.9750654Z           ]
2026-06-21T11:53:55.9750735Z         }
2026-06-21T11:53:55.9750823Z       }
2026-06-21T11:53:55.9750904Z     },
2026-06-21T11:53:55.9750985Z     {
2026-06-21T11:53:55.9751110Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T11:53:55.9751262Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T11:53:55.9751353Z       "requiredStages": [
2026-06-21T11:53:55.9751439Z         "impl",
2026-06-21T11:53:55.9751514Z         "unit"
2026-06-21T11:53:55.9751595Z       ],
2026-06-21T11:53:55.9751682Z       "stages": {
2026-06-21T11:53:55.9751768Z         "doc": {
2026-06-21T11:53:55.9751876Z           "complete": false,
2026-06-21T11:53:55.9751973Z           "evidence": []
2026-06-21T11:53:55.9752058Z         },
2026-06-21T11:53:55.9752148Z         "impl": {
2026-06-21T11:53:55.9752239Z           "complete": true,
2026-06-21T11:53:55.9752331Z           "evidence": [
2026-06-21T11:53:55.9752411Z             {
2026-06-21T11:53:55.9752530Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T11:53:55.9752612Z               "line": 25
2026-06-21T11:53:55.9752697Z             },
2026-06-21T11:53:55.9752783Z             {
2026-06-21T11:53:55.9752889Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:55.9752984Z               "line": 26
2026-06-21T11:53:55.9753063Z             },
2026-06-21T11:53:55.9753150Z             {
2026-06-21T11:53:55.9753261Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:55.9753341Z               "line": 159
2026-06-21T11:53:55.9753425Z             }
2026-06-21T11:53:55.9753506Z           ]
2026-06-21T11:53:55.9753593Z         },
2026-06-21T11:53:55.9753672Z         "int": {
2026-06-21T11:53:55.9753756Z           "complete": false,
2026-06-21T11:53:55.9753848Z           "evidence": []
2026-06-21T11:53:55.9753934Z         },
2026-06-21T11:53:55.9754015Z         "unit": {
2026-06-21T11:53:55.9754100Z           "complete": true,
2026-06-21T11:53:55.9754191Z           "evidence": [
2026-06-21T11:53:55.9754272Z             {
2026-06-21T11:53:55.9754381Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T11:53:55.9754462Z               "line": 188
2026-06-21T11:53:55.9754549Z             },
2026-06-21T11:53:55.9754630Z             {
2026-06-21T11:53:55.9754729Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T11:53:55.9754821Z               "line": 240
2026-06-21T11:53:55.9754907Z             },
2026-06-21T11:53:55.9754992Z             {
2026-06-21T11:53:55.9755097Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:55.9755189Z               "line": 186
2026-06-21T11:53:55.9755263Z             }
2026-06-21T11:53:55.9755470Z           ]
2026-06-21T11:53:55.9755555Z         }
2026-06-21T11:53:55.9755635Z       }
2026-06-21T11:53:55.9755722Z     },
2026-06-21T11:53:55.9755898Z     {
2026-06-21T11:53:55.9756002Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T11:53:55.9756173Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T11:53:55.9756266Z       "requiredStages": [
2026-06-21T11:53:55.9756356Z         "impl",
2026-06-21T11:53:55.9756438Z         "unit"
2026-06-21T11:53:55.9756525Z       ],
2026-06-21T11:53:55.9756614Z       "stages": {
2026-06-21T11:53:55.9756700Z         "doc": {
2026-06-21T11:53:55.9756792Z           "complete": false,
2026-06-21T11:53:55.9756878Z           "evidence": []
2026-06-21T11:53:55.9756953Z         },
2026-06-21T11:53:55.9757029Z         "impl": {
2026-06-21T11:53:55.9757116Z           "complete": true,
2026-06-21T11:53:55.9757197Z           "evidence": [
2026-06-21T11:53:55.9757282Z             {
2026-06-21T11:53:55.9757402Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9757492Z               "line": 48
2026-06-21T11:53:55.9757568Z             },
2026-06-21T11:53:55.9757658Z             {
2026-06-21T11:53:55.9757778Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9757869Z               "line": 55
2026-06-21T11:53:55.9757954Z             },
2026-06-21T11:53:55.9758041Z             {
2026-06-21T11:53:55.9758145Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9758240Z               "line": 74
2026-06-21T11:53:55.9758318Z             },
2026-06-21T11:53:55.9758399Z             {
2026-06-21T11:53:55.9758507Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9758589Z               "line": 91
2026-06-21T11:53:55.9758671Z             }
2026-06-21T11:53:55.9758742Z           ]
2026-06-21T11:53:55.9758816Z         },
2026-06-21T11:53:55.9758902Z         "int": {
2026-06-21T11:53:55.9759060Z           "complete": false,
2026-06-21T11:53:55.9759145Z           "evidence": []
2026-06-21T11:53:55.9759230Z         },
2026-06-21T11:53:55.9759313Z         "unit": {
2026-06-21T11:53:55.9759408Z           "complete": true,
2026-06-21T11:53:55.9759503Z           "evidence": [
2026-06-21T11:53:55.9759589Z             {
2026-06-21T11:53:55.9759742Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9759837Z               "line": 149
2026-06-21T11:53:55.9759923Z             },
2026-06-21T11:53:55.9760004Z             {
2026-06-21T11:53:55.9760114Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9760194Z               "line": 166
2026-06-21T11:53:55.9760277Z             },
2026-06-21T11:53:55.9760357Z             {
2026-06-21T11:53:55.9760461Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9760543Z               "line": 176
2026-06-21T11:53:55.9760634Z             },
2026-06-21T11:53:55.9760705Z             {
2026-06-21T11:53:55.9760819Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9760916Z               "line": 194
2026-06-21T11:53:55.9760996Z             },
2026-06-21T11:53:55.9761085Z             {
2026-06-21T11:53:55.9761194Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:55.9761280Z               "line": 207
2026-06-21T11:53:55.9761365Z             }
2026-06-21T11:53:55.9761450Z           ]
2026-06-21T11:53:55.9761531Z         }
2026-06-21T11:53:55.9761613Z       }
2026-06-21T11:53:55.9761698Z     },
2026-06-21T11:53:55.9761773Z     {
2026-06-21T11:53:55.9761880Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T11:53:55.9762065Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T11:53:55.9762165Z       "requiredStages": [
2026-06-21T11:53:55.9762252Z         "impl",
2026-06-21T11:53:55.9762332Z         "unit"
2026-06-21T11:53:55.9762417Z       ],
2026-06-21T11:53:55.9762500Z       "stages": {
2026-06-21T11:53:55.9762585Z         "doc": {
2026-06-21T11:53:55.9762666Z           "complete": false,
2026-06-21T11:53:55.9762848Z           "evidence": []
2026-06-21T11:53:55.9762933Z         },
2026-06-21T11:53:55.9763105Z         "impl": {
2026-06-21T11:53:55.9763182Z           "complete": true,
2026-06-21T11:53:55.9763272Z           "evidence": [
2026-06-21T11:53:55.9763348Z             {
2026-06-21T11:53:55.9763468Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9763567Z               "line": 466
2026-06-21T11:53:55.9763643Z             },
2026-06-21T11:53:55.9763725Z             {
2026-06-21T11:53:55.9763835Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:55.9763924Z               "line": 26
2026-06-21T11:53:55.9764005Z             }
2026-06-21T11:53:55.9764076Z           ]
2026-06-21T11:53:55.9764157Z         },
2026-06-21T11:53:55.9764241Z         "int": {
2026-06-21T11:53:55.9764336Z           "complete": false,
2026-06-21T11:53:55.9764422Z           "evidence": []
2026-06-21T11:53:55.9764508Z         },
2026-06-21T11:53:55.9764599Z         "unit": {
2026-06-21T11:53:55.9764679Z           "complete": true,
2026-06-21T11:53:55.9764771Z           "evidence": [
2026-06-21T11:53:55.9764856Z             {
2026-06-21T11:53:55.9764960Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:55.9765052Z               "line": 150
2026-06-21T11:53:55.9765133Z             },
2026-06-21T11:53:55.9765219Z             {
2026-06-21T11:53:55.9765323Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:55.9765410Z               "line": 208
2026-06-21T11:53:55.9765481Z             }
2026-06-21T11:53:55.9765567Z           ]
2026-06-21T11:53:55.9765643Z         }
2026-06-21T11:53:55.9765729Z       }
2026-06-21T11:53:55.9765814Z     },
2026-06-21T11:53:55.9765896Z     {
2026-06-21T11:53:55.9766021Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T11:53:55.9775259Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T11:53:55.9775631Z       "requiredStages": [
2026-06-21T11:53:55.9775717Z         "impl",
2026-06-21T11:53:55.9775807Z         "unit",
2026-06-21T11:53:55.9775888Z         "int"
2026-06-21T11:53:55.9775979Z       ],
2026-06-21T11:53:55.9776065Z       "stages": {
2026-06-21T11:53:55.9776150Z         "doc": {
2026-06-21T11:53:55.9776246Z           "complete": false,
2026-06-21T11:53:55.9776337Z           "evidence": []
2026-06-21T11:53:55.9776417Z         },
2026-06-21T11:53:55.9776503Z         "impl": {
2026-06-21T11:53:55.9776595Z           "complete": true,
2026-06-21T11:53:55.9776690Z           "evidence": [
2026-06-21T11:53:55.9776775Z             {
2026-06-21T11:53:55.9776900Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:55.9776991Z               "line": 99
2026-06-21T11:53:55.9777070Z             },
2026-06-21T11:53:55.9777155Z             {
2026-06-21T11:53:55.9777274Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:55.9777359Z               "line": 201
2026-06-21T11:53:55.9777443Z             }
2026-06-21T11:53:55.9777525Z           ]
2026-06-21T11:53:55.9777607Z         },
2026-06-21T11:53:55.9777688Z         "int": {
2026-06-21T11:53:55.9777772Z           "complete": true,
2026-06-21T11:53:55.9777869Z           "evidence": [
2026-06-21T11:53:55.9777950Z             {
2026-06-21T11:53:55.9778106Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:55.9778188Z               "line": 737
2026-06-21T11:53:55.9778269Z             }
2026-06-21T11:53:55.9778350Z           ]
2026-06-21T11:53:55.9778435Z         },
2026-06-21T11:53:55.9778517Z         "unit": {
2026-06-21T11:53:55.9778607Z           "complete": true,
2026-06-21T11:53:55.9778702Z           "evidence": [
2026-06-21T11:53:55.9778779Z             {
2026-06-21T11:53:55.9778885Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:55.9779055Z               "line": 517
2026-06-21T11:53:55.9779133Z             },
2026-06-21T11:53:55.9779214Z             {
2026-06-21T11:53:55.9779346Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:55.9779443Z               "line": 576
2026-06-21T11:53:55.9779520Z             }
2026-06-21T11:53:55.9779608Z           ]
2026-06-21T11:53:55.9779680Z         }
2026-06-21T11:53:55.9779768Z       }
2026-06-21T11:53:55.9779849Z     },
2026-06-21T11:53:55.9779927Z     {
2026-06-21T11:53:55.9780055Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T11:53:55.9781363Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T11:53:55.9781468Z       "requiredStages": [
2026-06-21T11:53:55.9781558Z         "doc",
2026-06-21T11:53:55.9781639Z         "impl",
2026-06-21T11:53:55.9781834Z         "unit"
2026-06-21T11:53:55.9781915Z       ],
2026-06-21T11:53:55.9782002Z       "stages": {
2026-06-21T11:53:55.9782163Z         "doc": {
2026-06-21T11:53:55.9782257Z           "complete": true,
2026-06-21T11:53:55.9782348Z           "evidence": [
2026-06-21T11:53:55.9782429Z             {
2026-06-21T11:53:55.9782542Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9782627Z               "line": 214
2026-06-21T11:53:55.9782704Z             }
2026-06-21T11:53:55.9782795Z           ]
2026-06-21T11:53:55.9782875Z         },
2026-06-21T11:53:55.9782961Z         "impl": {
2026-06-21T11:53:55.9783048Z           "complete": true,
2026-06-21T11:53:55.9783133Z           "evidence": [
2026-06-21T11:53:55.9783209Z             {
2026-06-21T11:53:55.9783334Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9783419Z               "line": 56
2026-06-21T11:53:55.9783504Z             },
2026-06-21T11:53:55.9783586Z             {
2026-06-21T11:53:55.9783700Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:55.9783800Z               "line": 580
2026-06-21T11:53:55.9783891Z             },
2026-06-21T11:53:55.9783973Z             {
2026-06-21T11:53:55.9784096Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9784186Z               "line": 36
2026-06-21T11:53:55.9784259Z             },
2026-06-21T11:53:55.9784335Z             {
2026-06-21T11:53:55.9784459Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9784545Z               "line": 59
2026-06-21T11:53:55.9784631Z             },
2026-06-21T11:53:55.9784701Z             {
2026-06-21T11:53:55.9784816Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9784903Z               "line": 83
2026-06-21T11:53:55.9784984Z             },
2026-06-21T11:53:55.9785068Z             {
2026-06-21T11:53:55.9785172Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9785254Z               "line": 140
2026-06-21T11:53:55.9785343Z             },
2026-06-21T11:53:55.9785423Z             {
2026-06-21T11:53:55.9785533Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9785624Z               "line": 159
2026-06-21T11:53:55.9785709Z             },
2026-06-21T11:53:55.9785789Z             {
2026-06-21T11:53:55.9785915Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9786005Z               "line": 384
2026-06-21T11:53:55.9786090Z             },
2026-06-21T11:53:55.9786172Z             {
2026-06-21T11:53:55.9786287Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9786376Z               "line": 535
2026-06-21T11:53:55.9786453Z             },
2026-06-21T11:53:55.9786539Z             {
2026-06-21T11:53:55.9786643Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9786738Z               "line": 581
2026-06-21T11:53:55.9786826Z             },
2026-06-21T11:53:55.9786902Z             {
2026-06-21T11:53:55.9787020Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:55.9787097Z               "line": 300
2026-06-21T11:53:55.9787188Z             },
2026-06-21T11:53:55.9787273Z             {
2026-06-21T11:53:55.9787382Z               "path": "crates/spt/src/main.rs",
2026-06-21T11:53:55.9787470Z               "line": 42
2026-06-21T11:53:55.9787551Z             }
2026-06-21T11:53:55.9787639Z           ]
2026-06-21T11:53:55.9787720Z         },
2026-06-21T11:53:55.9787801Z         "int": {
2026-06-21T11:53:55.9787891Z           "complete": false,
2026-06-21T11:53:55.9787980Z           "evidence": []
2026-06-21T11:53:55.9788075Z         },
2026-06-21T11:53:55.9788147Z         "unit": {
2026-06-21T11:53:55.9788239Z           "complete": true,
2026-06-21T11:53:55.9788323Z           "evidence": [
2026-06-21T11:53:55.9788409Z             {
2026-06-21T11:53:55.9788543Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9788666Z               "line": 813
2026-06-21T11:53:55.9788830Z             },
2026-06-21T11:53:55.9788911Z             {
2026-06-21T11:53:55.9789092Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9789267Z               "line": 854
2026-06-21T11:53:55.9789353Z             },
2026-06-21T11:53:55.9789431Z             {
2026-06-21T11:53:55.9789535Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:55.9789625Z               "line": 928
2026-06-21T11:53:55.9789707Z             }
2026-06-21T11:53:55.9789793Z           ]
2026-06-21T11:53:55.9789868Z         }
2026-06-21T11:53:55.9789964Z       }
2026-06-21T11:53:55.9790046Z     },
2026-06-21T11:53:55.9790126Z     {
2026-06-21T11:53:55.9790254Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T11:53:55.9795196Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T11:53:55.9795338Z       "requiredStages": [
2026-06-21T11:53:55.9795420Z         "impl",
2026-06-21T11:53:55.9795511Z         "unit",
2026-06-21T11:53:55.9795586Z         "int"
2026-06-21T11:53:55.9795666Z       ],
2026-06-21T11:53:55.9795752Z       "stages": {
2026-06-21T11:53:55.9795842Z         "doc": {
2026-06-21T11:53:55.9795945Z           "complete": false,
2026-06-21T11:53:55.9796035Z           "evidence": []
2026-06-21T11:53:55.9796122Z         },
2026-06-21T11:53:55.9796203Z         "impl": {
2026-06-21T11:53:55.9796293Z           "complete": true,
2026-06-21T11:53:55.9796379Z           "evidence": [
2026-06-21T11:53:55.9796465Z             {
2026-06-21T11:53:55.9796598Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:55.9796678Z               "line": 115
2026-06-21T11:53:55.9796761Z             }
2026-06-21T11:53:55.9796847Z           ]
2026-06-21T11:53:55.9796927Z         },
2026-06-21T11:53:55.9797013Z         "int": {
2026-06-21T11:53:55.9797100Z           "complete": true,
2026-06-21T11:53:55.9797185Z           "evidence": [
2026-06-21T11:53:55.9797266Z             {
2026-06-21T11:53:55.9797401Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T11:53:55.9797481Z               "line": 296
2026-06-21T11:53:55.9797561Z             }
2026-06-21T11:53:55.9797642Z           ]
2026-06-21T11:53:55.9797720Z         },
2026-06-21T11:53:55.9797814Z         "unit": {
2026-06-21T11:53:55.9797895Z           "complete": true,
2026-06-21T11:53:55.9797977Z           "evidence": [
2026-06-21T11:53:55.9798162Z             {
2026-06-21T11:53:55.9798290Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:55.9798446Z               "line": 464
2026-06-21T11:53:55.9798526Z             }
2026-06-21T11:53:55.9798616Z           ]
2026-06-21T11:53:55.9798707Z         }
2026-06-21T11:53:55.9798822Z       }
2026-06-21T11:53:55.9798897Z     },
2026-06-21T11:53:55.9799056Z     {
2026-06-21T11:53:55.9799151Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T11:53:55.9802526Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T11:53:55.9802649Z       "requiredStages": [
2026-06-21T11:53:55.9802730Z         "impl",
2026-06-21T11:53:55.9802817Z         "unit",
2026-06-21T11:53:55.9802898Z         "int"
2026-06-21T11:53:55.9802983Z       ],
2026-06-21T11:53:55.9803074Z       "stages": {
2026-06-21T11:53:55.9803161Z         "doc": {
2026-06-21T11:53:55.9803251Z           "complete": false,
2026-06-21T11:53:55.9803359Z           "evidence": []
2026-06-21T11:53:55.9803440Z         },
2026-06-21T11:53:55.9803526Z         "impl": {
2026-06-21T11:53:55.9803628Z           "complete": true,
2026-06-21T11:53:55.9803709Z           "evidence": [
2026-06-21T11:53:55.9803786Z             {
2026-06-21T11:53:55.9803915Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:55.9804005Z               "line": 123
2026-06-21T11:53:55.9804081Z             },
2026-06-21T11:53:55.9804163Z             {
2026-06-21T11:53:55.9804277Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T11:53:55.9804362Z               "line": 134
2026-06-21T11:53:55.9804445Z             }
2026-06-21T11:53:55.9804525Z           ]
2026-06-21T11:53:55.9804610Z         },
2026-06-21T11:53:55.9804696Z         "int": {
2026-06-21T11:53:55.9804788Z           "complete": true,
2026-06-21T11:53:55.9804873Z           "evidence": [
2026-06-21T11:53:55.9804958Z             {
2026-06-21T11:53:55.9805074Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:55.9805163Z               "line": 312
2026-06-21T11:53:55.9805254Z             },
2026-06-21T11:53:55.9805340Z             {
2026-06-21T11:53:55.9805446Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:55.9805526Z               "line": 525
2026-06-21T11:53:55.9805617Z             }
2026-06-21T11:53:55.9805699Z           ]
2026-06-21T11:53:55.9805784Z         },
2026-06-21T11:53:55.9805864Z         "unit": {
2026-06-21T11:53:55.9805955Z           "complete": true,
2026-06-21T11:53:55.9806038Z           "evidence": [
2026-06-21T11:53:55.9806122Z             {
2026-06-21T11:53:55.9806254Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:55.9806345Z               "line": 250
2026-06-21T11:53:55.9806426Z             }
2026-06-21T11:53:55.9806515Z           ]
2026-06-21T11:53:55.9806590Z         }
2026-06-21T11:53:55.9806677Z       }
2026-06-21T11:53:55.9806759Z     },
2026-06-21T11:53:55.9806963Z     {
2026-06-21T11:53:55.9807078Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T11:53:55.9808802Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T11:53:55.9809077Z       "requiredStages": [
2026-06-21T11:53:55.9809162Z         "impl",
2026-06-21T11:53:55.9809239Z         "unit"
2026-06-21T11:53:55.9809325Z       ],
2026-06-21T11:53:55.9809401Z       "stages": {
2026-06-21T11:53:55.9809481Z         "doc": {
2026-06-21T11:53:55.9809573Z           "complete": false,
2026-06-21T11:53:55.9809668Z           "evidence": []
2026-06-21T11:53:55.9809754Z         },
2026-06-21T11:53:55.9809839Z         "impl": {
2026-06-21T11:53:55.9809935Z           "complete": true,
2026-06-21T11:53:55.9810021Z           "evidence": [
2026-06-21T11:53:55.9810106Z             {
2026-06-21T11:53:55.9810226Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9810316Z               "line": 31
2026-06-21T11:53:55.9810397Z             }
2026-06-21T11:53:55.9810478Z           ]
2026-06-21T11:53:55.9810570Z         },
2026-06-21T11:53:55.9810645Z         "int": {
2026-06-21T11:53:55.9810740Z           "complete": false,
2026-06-21T11:53:55.9810828Z           "evidence": []
2026-06-21T11:53:55.9810917Z         },
2026-06-21T11:53:55.9810998Z         "unit": {
2026-06-21T11:53:55.9811079Z           "complete": true,
2026-06-21T11:53:55.9811166Z           "evidence": [
2026-06-21T11:53:55.9811251Z             {
2026-06-21T11:53:55.9811370Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9811462Z               "line": 181
2026-06-21T11:53:55.9811557Z             }
2026-06-21T11:53:55.9811646Z           ]
2026-06-21T11:53:55.9811726Z         }
2026-06-21T11:53:55.9811817Z       }
2026-06-21T11:53:55.9811900Z     },
2026-06-21T11:53:55.9811979Z     {
2026-06-21T11:53:55.9812099Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T11:53:55.9812252Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T11:53:55.9812351Z       "requiredStages": [
2026-06-21T11:53:55.9812433Z         "impl",
2026-06-21T11:53:55.9812523Z         "unit"
2026-06-21T11:53:55.9812604Z       ],
2026-06-21T11:53:55.9812690Z       "stages": {
2026-06-21T11:53:55.9812772Z         "doc": {
2026-06-21T11:53:55.9812871Z           "complete": false,
2026-06-21T11:53:55.9812952Z           "evidence": []
2026-06-21T11:53:55.9813033Z         },
2026-06-21T11:53:55.9813120Z         "impl": {
2026-06-21T11:53:55.9813204Z           "complete": true,
2026-06-21T11:53:55.9813309Z           "evidence": [
2026-06-21T11:53:55.9813392Z             {
2026-06-21T11:53:55.9813524Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9813610Z               "line": 49
2026-06-21T11:53:55.9813692Z             },
2026-06-21T11:53:55.9813773Z             {
2026-06-21T11:53:55.9813890Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9813980Z               "line": 81
2026-06-21T11:53:55.9814062Z             }
2026-06-21T11:53:55.9814142Z           ]
2026-06-21T11:53:55.9814231Z         },
2026-06-21T11:53:55.9814317Z         "int": {
2026-06-21T11:53:55.9814408Z           "complete": false,
2026-06-21T11:53:55.9814489Z           "evidence": []
2026-06-21T11:53:55.9814574Z         },
2026-06-21T11:53:55.9814656Z         "unit": {
2026-06-21T11:53:55.9814756Z           "complete": true,
2026-06-21T11:53:55.9814846Z           "evidence": [
2026-06-21T11:53:55.9814927Z             {
2026-06-21T11:53:55.9815152Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9815237Z               "line": 156
2026-06-21T11:53:55.9815414Z             },
2026-06-21T11:53:55.9815490Z             {
2026-06-21T11:53:55.9815615Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9815719Z               "line": 173
2026-06-21T11:53:55.9815800Z             },
2026-06-21T11:53:55.9815886Z             {
2026-06-21T11:53:55.9815997Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9816086Z               "line": 196
2026-06-21T11:53:55.9816167Z             }
2026-06-21T11:53:55.9816254Z           ]
2026-06-21T11:53:55.9816340Z         }
2026-06-21T11:53:55.9816419Z       }
2026-06-21T11:53:55.9816506Z     },
2026-06-21T11:53:55.9816593Z     {
2026-06-21T11:53:55.9816715Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T11:53:55.9816872Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T11:53:55.9816977Z       "requiredStages": [
2026-06-21T11:53:55.9817070Z         "impl",
2026-06-21T11:53:55.9817155Z         "unit"
2026-06-21T11:53:55.9817251Z       ],
2026-06-21T11:53:55.9817343Z       "stages": {
2026-06-21T11:53:55.9817427Z         "doc": {
2026-06-21T11:53:55.9817513Z           "complete": false,
2026-06-21T11:53:55.9817604Z           "evidence": []
2026-06-21T11:53:55.9817690Z         },
2026-06-21T11:53:55.9817766Z         "impl": {
2026-06-21T11:53:55.9817857Z           "complete": true,
2026-06-21T11:53:55.9817938Z           "evidence": [
2026-06-21T11:53:55.9818024Z             {
2026-06-21T11:53:55.9818138Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9818234Z               "line": 120
2026-06-21T11:53:55.9818319Z             }
2026-06-21T11:53:55.9818400Z           ]
2026-06-21T11:53:55.9818487Z         },
2026-06-21T11:53:55.9818572Z         "int": {
2026-06-21T11:53:55.9818662Z           "complete": false,
2026-06-21T11:53:55.9818753Z           "evidence": []
2026-06-21T11:53:55.9818850Z         },
2026-06-21T11:53:55.9818930Z         "unit": {
2026-06-21T11:53:55.9819112Z           "complete": true,
2026-06-21T11:53:55.9819198Z           "evidence": [
2026-06-21T11:53:55.9819282Z             {
2026-06-21T11:53:55.9819405Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9819487Z               "line": 212
2026-06-21T11:53:55.9819576Z             },
2026-06-21T11:53:55.9819656Z             {
2026-06-21T11:53:55.9819775Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9819866Z               "line": 221
2026-06-21T11:53:55.9819951Z             },
2026-06-21T11:53:55.9820036Z             {
2026-06-21T11:53:55.9820147Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9820233Z               "line": 229
2026-06-21T11:53:55.9820318Z             },
2026-06-21T11:53:55.9820404Z             {
2026-06-21T11:53:55.9820524Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9820609Z               "line": 239
2026-06-21T11:53:55.9820690Z             },
2026-06-21T11:53:55.9820772Z             {
2026-06-21T11:53:55.9820905Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T11:53:55.9820990Z               "line": 249
2026-06-21T11:53:55.9821073Z             }
2026-06-21T11:53:55.9821158Z           ]
2026-06-21T11:53:55.9821234Z         }
2026-06-21T11:53:55.9821315Z       }
2026-06-21T11:53:55.9821398Z     },
2026-06-21T11:53:55.9821487Z     {
2026-06-21T11:53:55.9821596Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T11:53:55.9821745Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T11:53:55.9821849Z       "requiredStages": [
2026-06-21T11:53:55.9821930Z         "impl",
2026-06-21T11:53:55.9822022Z         "unit"
2026-06-21T11:53:55.9822098Z       ],
2026-06-21T11:53:55.9822182Z       "stages": {
2026-06-21T11:53:55.9822262Z         "doc": {
2026-06-21T11:53:55.9822349Z           "complete": false,
2026-06-21T11:53:55.9822544Z           "evidence": []
2026-06-21T11:53:55.9822621Z         },
2026-06-21T11:53:55.9822697Z         "impl": {
2026-06-21T11:53:55.9822873Z           "complete": true,
2026-06-21T11:53:55.9822974Z           "evidence": [
2026-06-21T11:53:55.9823060Z             {
2026-06-21T11:53:55.9823169Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:55.9823260Z               "line": 14
2026-06-21T11:53:55.9823346Z             },
2026-06-21T11:53:55.9823431Z             {
2026-06-21T11:53:55.9823531Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:55.9823613Z               "line": 63
2026-06-21T11:53:55.9823694Z             }
2026-06-21T11:53:55.9823779Z           ]
2026-06-21T11:53:55.9823865Z         },
2026-06-21T11:53:55.9823943Z         "int": {
2026-06-21T11:53:55.9824033Z           "complete": false,
2026-06-21T11:53:55.9824112Z           "evidence": []
2026-06-21T11:53:55.9824194Z         },
2026-06-21T11:53:55.9824281Z         "unit": {
2026-06-21T11:53:55.9824380Z           "complete": true,
2026-06-21T11:53:55.9824460Z           "evidence": [
2026-06-21T11:53:55.9824540Z             {
2026-06-21T11:53:55.9824656Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:55.9824740Z               "line": 164
2026-06-21T11:53:55.9824820Z             },
2026-06-21T11:53:55.9824902Z             {
2026-06-21T11:53:55.9825002Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:55.9825092Z               "line": 198
2026-06-21T11:53:55.9825168Z             },
2026-06-21T11:53:55.9825249Z             {
2026-06-21T11:53:55.9825355Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:55.9825439Z               "line": 220
2026-06-21T11:53:55.9825516Z             }
2026-06-21T11:53:55.9825598Z           ]
2026-06-21T11:53:55.9825679Z         }
2026-06-21T11:53:55.9825759Z       }
2026-06-21T11:53:55.9825846Z     },
2026-06-21T11:53:55.9825927Z     {
2026-06-21T11:53:55.9826027Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T11:53:55.9827361Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T11:53:55.9827465Z       "requiredStages": [],
2026-06-21T11:53:55.9827556Z       "stages": {
2026-06-21T11:53:55.9827639Z         "doc": {
2026-06-21T11:53:55.9827725Z           "complete": true,
2026-06-21T11:53:55.9827821Z           "evidence": [
2026-06-21T11:53:55.9827903Z             {
2026-06-21T11:53:55.9828016Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9828107Z               "line": 165
2026-06-21T11:53:55.9828198Z             }
2026-06-21T11:53:55.9828274Z           ]
2026-06-21T11:53:55.9828355Z         },
2026-06-21T11:53:55.9828451Z         "impl": {
2026-06-21T11:53:55.9828531Z           "complete": false,
2026-06-21T11:53:55.9828626Z           "evidence": []
2026-06-21T11:53:55.9828703Z         },
2026-06-21T11:53:55.9828790Z         "int": {
2026-06-21T11:53:55.9828884Z           "complete": false,
2026-06-21T11:53:55.9829042Z           "evidence": []
2026-06-21T11:53:55.9829133Z         },
2026-06-21T11:53:55.9829217Z         "unit": {
2026-06-21T11:53:55.9829313Z           "complete": false,
2026-06-21T11:53:55.9829391Z           "evidence": []
2026-06-21T11:53:55.9829476Z         }
2026-06-21T11:53:55.9829566Z       }
2026-06-21T11:53:55.9829642Z     },
2026-06-21T11:53:55.9829725Z     {
2026-06-21T11:53:55.9829837Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T11:53:55.9830061Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T11:53:55.9830159Z       "requiredStages": [
2026-06-21T11:53:55.9830244Z         "impl",
2026-06-21T11:53:55.9830436Z         "unit"
2026-06-21T11:53:55.9830521Z       ],
2026-06-21T11:53:55.9830611Z       "stages": {
2026-06-21T11:53:55.9830789Z         "doc": {
2026-06-21T11:53:55.9830893Z           "complete": false,
2026-06-21T11:53:55.9830979Z           "evidence": []
2026-06-21T11:53:55.9831060Z         },
2026-06-21T11:53:55.9831151Z         "impl": {
2026-06-21T11:53:55.9831245Z           "complete": true,
2026-06-21T11:53:55.9831337Z           "evidence": [
2026-06-21T11:53:55.9831422Z             {
2026-06-21T11:53:55.9831546Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9834207Z               "line": 76
2026-06-21T11:53:55.9834334Z             },
2026-06-21T11:53:55.9834415Z             {
2026-06-21T11:53:55.9834540Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9834635Z               "line": 167
2026-06-21T11:53:55.9834721Z             },
2026-06-21T11:53:55.9834793Z             {
2026-06-21T11:53:55.9834912Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9835015Z               "line": 233
2026-06-21T11:53:55.9835101Z             },
2026-06-21T11:53:55.9835192Z             {
2026-06-21T11:53:55.9835300Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9835394Z               "line": 272
2026-06-21T11:53:55.9835471Z             }
2026-06-21T11:53:55.9835552Z           ]
2026-06-21T11:53:55.9835629Z         },
2026-06-21T11:53:55.9835709Z         "int": {
2026-06-21T11:53:55.9835800Z           "complete": false,
2026-06-21T11:53:55.9835890Z           "evidence": []
2026-06-21T11:53:55.9835972Z         },
2026-06-21T11:53:55.9836057Z         "unit": {
2026-06-21T11:53:55.9836149Z           "complete": true,
2026-06-21T11:53:55.9836239Z           "evidence": [
2026-06-21T11:53:55.9836324Z             {
2026-06-21T11:53:55.9836430Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9836520Z               "line": 321
2026-06-21T11:53:55.9836601Z             },
2026-06-21T11:53:55.9836682Z             {
2026-06-21T11:53:55.9836778Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9836872Z               "line": 329
2026-06-21T11:53:55.9836958Z             },
2026-06-21T11:53:55.9837040Z             {
2026-06-21T11:53:55.9837145Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9837235Z               "line": 356
2026-06-21T11:53:55.9837316Z             },
2026-06-21T11:53:55.9837398Z             {
2026-06-21T11:53:55.9837512Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9837597Z               "line": 395
2026-06-21T11:53:55.9837684Z             },
2026-06-21T11:53:55.9837771Z             {
2026-06-21T11:53:55.9837878Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9837968Z               "line": 406
2026-06-21T11:53:55.9838049Z             },
2026-06-21T11:53:55.9838134Z             {
2026-06-21T11:53:55.9838237Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9838334Z               "line": 418
2026-06-21T11:53:55.9838419Z             },
2026-06-21T11:53:55.9838496Z             {
2026-06-21T11:53:55.9838605Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T11:53:55.9838687Z               "line": 442
2026-06-21T11:53:55.9838772Z             }
2026-06-21T11:53:55.9838857Z           ]
2026-06-21T11:53:55.9838934Z         }
2026-06-21T11:53:55.9839106Z       }
2026-06-21T11:53:55.9839191Z     },
2026-06-21T11:53:55.9839273Z     {
2026-06-21T11:53:55.9839374Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T11:53:55.9839530Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T11:53:55.9839631Z       "requiredStages": [
2026-06-21T11:53:55.9839716Z         "impl",
2026-06-21T11:53:55.9839797Z         "int"
2026-06-21T11:53:55.9839869Z       ],
2026-06-21T11:53:55.9839951Z       "stages": {
2026-06-21T11:53:55.9840031Z         "doc": {
2026-06-21T11:53:55.9840126Z           "complete": false,
2026-06-21T11:53:55.9840222Z           "evidence": []
2026-06-21T11:53:55.9840431Z         },
2026-06-21T11:53:55.9840515Z         "impl": {
2026-06-21T11:53:55.9840691Z           "complete": true,
2026-06-21T11:53:55.9840776Z           "evidence": [
2026-06-21T11:53:55.9840851Z             {
2026-06-21T11:53:55.9840967Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9841062Z               "line": 22
2026-06-21T11:53:55.9841143Z             }
2026-06-21T11:53:55.9841229Z           ]
2026-06-21T11:53:55.9841306Z         },
2026-06-21T11:53:55.9841400Z         "int": {
2026-06-21T11:53:55.9841481Z           "complete": true,
2026-06-21T11:53:55.9841569Z           "evidence": [
2026-06-21T11:53:55.9841644Z             {
2026-06-21T11:53:55.9841767Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T11:53:55.9841849Z               "line": 18
2026-06-21T11:53:55.9841930Z             }
2026-06-21T11:53:55.9842006Z           ]
2026-06-21T11:53:55.9842087Z         },
2026-06-21T11:53:55.9842169Z         "unit": {
2026-06-21T11:53:55.9842259Z           "complete": false,
2026-06-21T11:53:55.9842349Z           "evidence": []
2026-06-21T11:53:55.9842430Z         }
2026-06-21T11:53:55.9842513Z       }
2026-06-21T11:53:55.9842597Z     },
2026-06-21T11:53:55.9842678Z     {
2026-06-21T11:53:55.9842799Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T11:53:55.9842993Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T11:53:55.9843089Z       "requiredStages": [
2026-06-21T11:53:55.9843171Z         "impl",
2026-06-21T11:53:55.9843255Z         "unit"
2026-06-21T11:53:55.9843341Z       ],
2026-06-21T11:53:55.9843426Z       "stages": {
2026-06-21T11:53:55.9843503Z         "doc": {
2026-06-21T11:53:55.9843594Z           "complete": false,
2026-06-21T11:53:55.9843669Z           "evidence": []
2026-06-21T11:53:55.9843755Z         },
2026-06-21T11:53:55.9843837Z         "impl": {
2026-06-21T11:53:55.9843937Z           "complete": true,
2026-06-21T11:53:55.9844012Z           "evidence": [
2026-06-21T11:53:55.9844104Z             {
2026-06-21T11:53:55.9844218Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9844313Z               "line": 465
2026-06-21T11:53:55.9844399Z             },
2026-06-21T11:53:55.9844480Z             {
2026-06-21T11:53:55.9844595Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:55.9844675Z               "line": 27
2026-06-21T11:53:55.9844758Z             }
2026-06-21T11:53:55.9844838Z           ]
2026-06-21T11:53:55.9844924Z         },
2026-06-21T11:53:55.9844999Z         "int": {
2026-06-21T11:53:55.9845087Z           "complete": false,
2026-06-21T11:53:55.9845167Z           "evidence": []
2026-06-21T11:53:55.9845242Z         },
2026-06-21T11:53:55.9845329Z         "unit": {
2026-06-21T11:53:55.9845411Z           "complete": true,
2026-06-21T11:53:55.9845491Z           "evidence": [
2026-06-21T11:53:55.9845575Z             {
2026-06-21T11:53:55.9845690Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:55.9845776Z               "line": 990
2026-06-21T11:53:55.9845860Z             },
2026-06-21T11:53:55.9845954Z             {
2026-06-21T11:53:55.9846059Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:55.9846142Z               "line": 181
2026-06-21T11:53:55.9846231Z             }
2026-06-21T11:53:55.9846312Z           ]
2026-06-21T11:53:55.9846399Z         }
2026-06-21T11:53:55.9846480Z       }
2026-06-21T11:53:55.9846564Z     },
2026-06-21T11:53:55.9846651Z     {
2026-06-21T11:53:55.9846766Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T11:53:55.9846922Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T11:53:55.9847009Z       "requiredStages": [
2026-06-21T11:53:55.9847095Z         "impl",
2026-06-21T11:53:55.9847176Z         "unit"
2026-06-21T11:53:55.9847261Z       ],
2026-06-21T11:53:55.9847343Z       "stages": {
2026-06-21T11:53:55.9847424Z         "doc": {
2026-06-21T11:53:55.9847518Z           "complete": false,
2026-06-21T11:53:55.9847687Z           "evidence": []
2026-06-21T11:53:55.9847771Z         },
2026-06-21T11:53:55.9847915Z         "impl": {
2026-06-21T11:53:55.9848001Z           "complete": true,
2026-06-21T11:53:55.9848086Z           "evidence": [
2026-06-21T11:53:55.9848167Z             {
2026-06-21T11:53:55.9848287Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9848373Z               "line": 73
2026-06-21T11:53:55.9848462Z             },
2026-06-21T11:53:55.9848542Z             {
2026-06-21T11:53:55.9848666Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9848755Z               "line": 972
2026-06-21T11:53:55.9848836Z             },
2026-06-21T11:53:55.9848913Z             {
2026-06-21T11:53:55.9849093Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T11:53:55.9849174Z               "line": 20
2026-06-21T11:53:55.9849257Z             },
2026-06-21T11:53:55.9849337Z             {
2026-06-21T11:53:55.9849451Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T11:53:55.9849538Z               "line": 100
2026-06-21T11:53:55.9849633Z             },
2026-06-21T11:53:55.9849714Z             {
2026-06-21T11:53:55.9849823Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9849910Z               "line": 619
2026-06-21T11:53:55.9849976Z             },
2026-06-21T11:53:55.9850057Z             {
2026-06-21T11:53:55.9850172Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T11:53:55.9850253Z               "line": 68
2026-06-21T11:53:55.9850337Z             },
2026-06-21T11:53:55.9850424Z             {
2026-06-21T11:53:55.9850530Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T11:53:55.9850615Z               "line": 80
2026-06-21T11:53:55.9850700Z             }
2026-06-21T11:53:55.9850782Z           ]
2026-06-21T11:53:55.9850864Z         },
2026-06-21T11:53:55.9850948Z         "int": {
2026-06-21T11:53:55.9851043Z           "complete": true,
2026-06-21T11:53:55.9851138Z           "evidence": [
2026-06-21T11:53:55.9851219Z             {
2026-06-21T11:53:55.9851336Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T11:53:55.9851421Z               "line": 44
2026-06-21T11:53:55.9851498Z             }
2026-06-21T11:53:55.9851581Z           ]
2026-06-21T11:53:55.9851660Z         },
2026-06-21T11:53:55.9851736Z         "unit": {
2026-06-21T11:53:55.9851828Z           "complete": true,
2026-06-21T11:53:55.9851919Z           "evidence": [
2026-06-21T11:53:55.9851994Z             {
2026-06-21T11:53:55.9852109Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9852190Z               "line": 1181
2026-06-21T11:53:55.9852271Z             },
2026-06-21T11:53:55.9852356Z             {
2026-06-21T11:53:55.9852467Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:55.9852557Z               "line": 1197
2026-06-21T11:53:55.9852632Z             },
2026-06-21T11:53:55.9852714Z             {
2026-06-21T11:53:55.9852829Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9852919Z               "line": 2672
2026-06-21T11:53:55.9853014Z             },
2026-06-21T11:53:55.9853087Z             {
2026-06-21T11:53:55.9853200Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T11:53:55.9853281Z               "line": 152
2026-06-21T11:53:55.9853368Z             },
2026-06-21T11:53:55.9853449Z             {
2026-06-21T11:53:55.9853558Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T11:53:55.9853649Z               "line": 175
2026-06-21T11:53:55.9853731Z             },
2026-06-21T11:53:55.9853825Z             {
2026-06-21T11:53:55.9853924Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T11:53:55.9854010Z               "line": 186
2026-06-21T11:53:55.9854092Z             },
2026-06-21T11:53:55.9854172Z             {
2026-06-21T11:53:55.9854281Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T11:53:55.9854464Z               "line": 202
2026-06-21T11:53:55.9854549Z             },
2026-06-21T11:53:55.9854635Z             {
2026-06-21T11:53:55.9854840Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T11:53:55.9854920Z               "line": 216
2026-06-21T11:53:55.9855003Z             },
2026-06-21T11:53:55.9855088Z             {
2026-06-21T11:53:55.9855197Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T11:53:55.9855288Z               "line": 137
2026-06-21T11:53:55.9855369Z             },
2026-06-21T11:53:55.9855445Z             {
2026-06-21T11:53:55.9855550Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9855637Z               "line": 8152
2026-06-21T11:53:55.9855722Z             },
2026-06-21T11:53:55.9855802Z             {
2026-06-21T11:53:55.9855918Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T11:53:55.9855999Z               "line": 30
2026-06-21T11:53:55.9856084Z             },
2026-06-21T11:53:55.9856164Z             {
2026-06-21T11:53:55.9856284Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T11:53:55.9856364Z               "line": 73
2026-06-21T11:53:55.9856453Z             }
2026-06-21T11:53:55.9856538Z           ]
2026-06-21T11:53:55.9856615Z         }
2026-06-21T11:53:55.9856697Z       }
2026-06-21T11:53:55.9856777Z     },
2026-06-21T11:53:55.9856863Z     {
2026-06-21T11:53:55.9856993Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T11:53:55.9861152Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T11:53:55.9861275Z       "requiredStages": [
2026-06-21T11:53:55.9861357Z         "impl",
2026-06-21T11:53:55.9861438Z         "unit",
2026-06-21T11:53:55.9861518Z         "int"
2026-06-21T11:53:55.9861617Z       ],
2026-06-21T11:53:55.9861708Z       "stages": {
2026-06-21T11:53:55.9861784Z         "doc": {
2026-06-21T11:53:55.9861886Z           "complete": false,
2026-06-21T11:53:55.9861976Z           "evidence": []
2026-06-21T11:53:55.9862054Z         },
2026-06-21T11:53:55.9862136Z         "impl": {
2026-06-21T11:53:55.9862234Z           "complete": true,
2026-06-21T11:53:55.9862320Z           "evidence": [
2026-06-21T11:53:55.9862388Z             {
2026-06-21T11:53:55.9862516Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9862602Z               "line": 510
2026-06-21T11:53:55.9862689Z             },
2026-06-21T11:53:55.9862774Z             {
2026-06-21T11:53:55.9862897Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9862979Z               "line": 704
2026-06-21T11:53:55.9863060Z             }
2026-06-21T11:53:55.9863141Z           ]
2026-06-21T11:53:55.9863222Z         },
2026-06-21T11:53:55.9863303Z         "int": {
2026-06-21T11:53:55.9863479Z           "complete": true,
2026-06-21T11:53:55.9863561Z           "evidence": [
2026-06-21T11:53:55.9863647Z             {
2026-06-21T11:53:55.9863880Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9863972Z               "line": 1119
2026-06-21T11:53:55.9864051Z             },
2026-06-21T11:53:55.9864137Z             {
2026-06-21T11:53:55.9864262Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T11:53:55.9864348Z               "line": 312
2026-06-21T11:53:55.9864432Z             }
2026-06-21T11:53:55.9864503Z           ]
2026-06-21T11:53:55.9864589Z         },
2026-06-21T11:53:55.9864671Z         "unit": {
2026-06-21T11:53:55.9864766Z           "complete": true,
2026-06-21T11:53:55.9864846Z           "evidence": [
2026-06-21T11:53:55.9864928Z             {
2026-06-21T11:53:55.9865047Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9865133Z               "line": 821
2026-06-21T11:53:55.9865219Z             }
2026-06-21T11:53:55.9865300Z           ]
2026-06-21T11:53:55.9865381Z         }
2026-06-21T11:53:55.9865462Z       }
2026-06-21T11:53:55.9865553Z     },
2026-06-21T11:53:55.9865634Z     {
2026-06-21T11:53:55.9865733Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T11:53:55.9865986Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T11:53:55.9866077Z       "requiredStages": [
2026-06-21T11:53:55.9866154Z         "impl",
2026-06-21T11:53:55.9866231Z         "unit"
2026-06-21T11:53:55.9866315Z       ],
2026-06-21T11:53:55.9866401Z       "stages": {
2026-06-21T11:53:55.9866478Z         "doc": {
2026-06-21T11:53:55.9866573Z           "complete": true,
2026-06-21T11:53:55.9866658Z           "evidence": [
2026-06-21T11:53:55.9866743Z             {
2026-06-21T11:53:55.9866849Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9866938Z               "line": 133
2026-06-21T11:53:55.9867023Z             }
2026-06-21T11:53:55.9867103Z           ]
2026-06-21T11:53:55.9867190Z         },
2026-06-21T11:53:55.9867276Z         "impl": {
2026-06-21T11:53:55.9867361Z           "complete": true,
2026-06-21T11:53:55.9867451Z           "evidence": [
2026-06-21T11:53:55.9867538Z             {
2026-06-21T11:53:55.9867656Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:55.9867742Z               "line": 65
2026-06-21T11:53:55.9867824Z             },
2026-06-21T11:53:55.9867910Z             {
2026-06-21T11:53:55.9868019Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T11:53:55.9868101Z               "line": 17
2026-06-21T11:53:55.9868191Z             },
2026-06-21T11:53:55.9868272Z             {
2026-06-21T11:53:55.9868391Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9868472Z               "line": 146
2026-06-21T11:53:55.9868558Z             },
2026-06-21T11:53:55.9868644Z             {
2026-06-21T11:53:55.9868760Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9868844Z               "line": 310
2026-06-21T11:53:55.9868930Z             },
2026-06-21T11:53:55.9869093Z             {
2026-06-21T11:53:55.9869225Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:55.9869302Z               "line": 441
2026-06-21T11:53:55.9869389Z             },
2026-06-21T11:53:55.9869474Z             {
2026-06-21T11:53:55.9869582Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:55.9869677Z               "line": 32
2026-06-21T11:53:55.9869758Z             },
2026-06-21T11:53:55.9869842Z             {
2026-06-21T11:53:55.9869946Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9870038Z               "line": 1283
2026-06-21T11:53:55.9870124Z             },
2026-06-21T11:53:55.9870205Z             {
2026-06-21T11:53:55.9870309Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9870391Z               "line": 6161
2026-06-21T11:53:55.9870477Z             },
2026-06-21T11:53:55.9870557Z             {
2026-06-21T11:53:55.9870758Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9870853Z               "line": 6443
2026-06-21T11:53:55.9871030Z             }
2026-06-21T11:53:55.9871115Z           ]
2026-06-21T11:53:55.9871196Z         },
2026-06-21T11:53:55.9871277Z         "int": {
2026-06-21T11:53:55.9871373Z           "complete": false,
2026-06-21T11:53:55.9871462Z           "evidence": []
2026-06-21T11:53:55.9871549Z         },
2026-06-21T11:53:55.9871631Z         "unit": {
2026-06-21T11:53:55.9871717Z           "complete": true,
2026-06-21T11:53:55.9871796Z           "evidence": [
2026-06-21T11:53:55.9871883Z             {
2026-06-21T11:53:55.9871989Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T11:53:55.9872078Z               "line": 94
2026-06-21T11:53:55.9872163Z             },
2026-06-21T11:53:55.9872234Z             {
2026-06-21T11:53:55.9872344Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T11:53:55.9872423Z               "line": 111
2026-06-21T11:53:55.9872513Z             },
2026-06-21T11:53:55.9872595Z             {
2026-06-21T11:53:55.9872701Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T11:53:55.9872789Z               "line": 124
2026-06-21T11:53:55.9872871Z             },
2026-06-21T11:53:55.9872953Z             {
2026-06-21T11:53:55.9873058Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T11:53:55.9873142Z               "line": 134
2026-06-21T11:53:55.9873225Z             },
2026-06-21T11:53:55.9873301Z             {
2026-06-21T11:53:55.9873410Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T11:53:55.9873491Z               "line": 144
2026-06-21T11:53:55.9873573Z             },
2026-06-21T11:53:55.9873648Z             {
2026-06-21T11:53:55.9873757Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T11:53:55.9873839Z               "line": 156
2026-06-21T11:53:55.9873926Z             },
2026-06-21T11:53:55.9874011Z             {
2026-06-21T11:53:55.9874130Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:55.9874222Z               "line": 746
2026-06-21T11:53:55.9874302Z             },
2026-06-21T11:53:55.9874392Z             {
2026-06-21T11:53:55.9874498Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:55.9874584Z               "line": 309
2026-06-21T11:53:55.9874668Z             }
2026-06-21T11:53:55.9874750Z           ]
2026-06-21T11:53:55.9874827Z         }
2026-06-21T11:53:55.9874899Z       }
2026-06-21T11:53:55.9874978Z     },
2026-06-21T11:53:55.9875049Z     {
2026-06-21T11:53:55.9875164Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T11:53:55.9875293Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T11:53:55.9875378Z       "requiredStages": [
2026-06-21T11:53:55.9875464Z         "impl",
2026-06-21T11:53:55.9875550Z         "unit"
2026-06-21T11:53:55.9875635Z       ],
2026-06-21T11:53:55.9875712Z       "stages": {
2026-06-21T11:53:55.9875799Z         "doc": {
2026-06-21T11:53:55.9875898Z           "complete": false,
2026-06-21T11:53:55.9875993Z           "evidence": []
2026-06-21T11:53:55.9876079Z         },
2026-06-21T11:53:55.9876170Z         "impl": {
2026-06-21T11:53:55.9876256Z           "complete": true,
2026-06-21T11:53:55.9876341Z           "evidence": [
2026-06-21T11:53:55.9876428Z             {
2026-06-21T11:53:55.9876532Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:55.9876618Z               "line": 128
2026-06-21T11:53:55.9876699Z             }
2026-06-21T11:53:55.9876786Z           ]
2026-06-21T11:53:55.9876866Z         },
2026-06-21T11:53:55.9876951Z         "int": {
2026-06-21T11:53:55.9877053Z           "complete": false,
2026-06-21T11:53:55.9877143Z           "evidence": []
2026-06-21T11:53:55.9877223Z         },
2026-06-21T11:53:55.9877313Z         "unit": {
2026-06-21T11:53:55.9877404Z           "complete": true,
2026-06-21T11:53:55.9877498Z           "evidence": [
2026-06-21T11:53:55.9877568Z             {
2026-06-21T11:53:55.9877683Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:55.9877845Z               "line": 205
2026-06-21T11:53:55.9877926Z             }
2026-06-21T11:53:55.9878074Z           ]
2026-06-21T11:53:55.9878155Z         }
2026-06-21T11:53:55.9878240Z       }
2026-06-21T11:53:55.9878322Z     },
2026-06-21T11:53:55.9878408Z     {
2026-06-21T11:53:55.9878526Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T11:53:55.9878676Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T11:53:55.9878770Z       "requiredStages": [
2026-06-21T11:53:55.9878856Z         "impl",
2026-06-21T11:53:55.9878937Z         "unit"
2026-06-21T11:53:55.9879089Z       ],
2026-06-21T11:53:55.9879175Z       "stages": {
2026-06-21T11:53:55.9879261Z         "doc": {
2026-06-21T11:53:55.9879339Z           "complete": false,
2026-06-21T11:53:55.9879423Z           "evidence": []
2026-06-21T11:53:55.9879500Z         },
2026-06-21T11:53:55.9879581Z         "impl": {
2026-06-21T11:53:55.9879667Z           "complete": true,
2026-06-21T11:53:55.9879766Z           "evidence": [
2026-06-21T11:53:55.9879857Z             {
2026-06-21T11:53:55.9879964Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9880062Z               "line": 367
2026-06-21T11:53:55.9880142Z             },
2026-06-21T11:53:55.9880228Z             {
2026-06-21T11:53:55.9880328Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9880412Z               "line": 378
2026-06-21T11:53:55.9880501Z             },
2026-06-21T11:53:55.9880574Z             {
2026-06-21T11:53:55.9880684Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9880765Z               "line": 396
2026-06-21T11:53:55.9880850Z             }
2026-06-21T11:53:55.9880937Z           ]
2026-06-21T11:53:55.9881022Z         },
2026-06-21T11:53:55.9881108Z         "int": {
2026-06-21T11:53:55.9881189Z           "complete": false,
2026-06-21T11:53:55.9881285Z           "evidence": []
2026-06-21T11:53:55.9881361Z         },
2026-06-21T11:53:55.9881446Z         "unit": {
2026-06-21T11:53:55.9881552Z           "complete": true,
2026-06-21T11:53:55.9881642Z           "evidence": [
2026-06-21T11:53:55.9881732Z             {
2026-06-21T11:53:55.9881837Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9881919Z               "line": 420
2026-06-21T11:53:55.9882004Z             },
2026-06-21T11:53:55.9882094Z             {
2026-06-21T11:53:55.9882192Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9882286Z               "line": 441
2026-06-21T11:53:55.9882376Z             },
2026-06-21T11:53:55.9882453Z             {
2026-06-21T11:53:55.9882563Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9882648Z               "line": 811
2026-06-21T11:53:55.9882733Z             },
2026-06-21T11:53:55.9882818Z             {
2026-06-21T11:53:55.9882923Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9883016Z               "line": 822
2026-06-21T11:53:55.9883097Z             },
2026-06-21T11:53:55.9883178Z             {
2026-06-21T11:53:55.9883284Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9883369Z               "line": 835
2026-06-21T11:53:55.9883445Z             }
2026-06-21T11:53:55.9883528Z           ]
2026-06-21T11:53:55.9883613Z         }
2026-06-21T11:53:55.9883698Z       }
2026-06-21T11:53:55.9883780Z     },
2026-06-21T11:53:55.9883861Z     {
2026-06-21T11:53:55.9883984Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T11:53:55.9891506Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T11:53:55.9891845Z       "requiredStages": [
2026-06-21T11:53:55.9891926Z         "impl",
2026-06-21T11:53:55.9892020Z         "unit",
2026-06-21T11:53:55.9892097Z         "int"
2026-06-21T11:53:55.9892183Z       ],
2026-06-21T11:53:55.9892274Z       "stages": {
2026-06-21T11:53:55.9892354Z         "doc": {
2026-06-21T11:53:55.9892451Z           "complete": false,
2026-06-21T11:53:55.9892540Z           "evidence": []
2026-06-21T11:53:55.9892626Z         },
2026-06-21T11:53:55.9892708Z         "impl": {
2026-06-21T11:53:55.9892799Z           "complete": true,
2026-06-21T11:53:55.9892879Z           "evidence": [
2026-06-21T11:53:55.9892956Z             {
2026-06-21T11:53:55.9893086Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9893161Z               "line": 364
2026-06-21T11:53:55.9893241Z             },
2026-06-21T11:53:55.9893326Z             {
2026-06-21T11:53:55.9893440Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9893534Z               "line": 835
2026-06-21T11:53:55.9893614Z             },
2026-06-21T11:53:55.9893696Z             {
2026-06-21T11:53:55.9893816Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9893901Z               "line": 1104
2026-06-21T11:53:55.9893991Z             }
2026-06-21T11:53:55.9894068Z           ]
2026-06-21T11:53:55.9894149Z         },
2026-06-21T11:53:55.9894230Z         "int": {
2026-06-21T11:53:55.9894325Z           "complete": true,
2026-06-21T11:53:55.9894407Z           "evidence": [
2026-06-21T11:53:55.9894488Z             {
2026-06-21T11:53:55.9894640Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:55.9894726Z               "line": 256
2026-06-21T11:53:55.9894806Z             },
2026-06-21T11:53:55.9894892Z             {
2026-06-21T11:53:55.9895037Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:55.9895121Z               "line": 382
2026-06-21T11:53:55.9895207Z             }
2026-06-21T11:53:55.9895289Z           ]
2026-06-21T11:53:55.9895370Z         },
2026-06-21T11:53:55.9895560Z         "unit": {
2026-06-21T11:53:55.9895652Z           "complete": true,
2026-06-21T11:53:55.9895746Z           "evidence": [
2026-06-21T11:53:55.9895904Z             {
2026-06-21T11:53:55.9896024Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9896108Z               "line": 2799
2026-06-21T11:53:55.9896193Z             }
2026-06-21T11:53:55.9896275Z           ]
2026-06-21T11:53:55.9896351Z         }
2026-06-21T11:53:55.9896441Z       }
2026-06-21T11:53:55.9896522Z     },
2026-06-21T11:53:55.9896603Z     {
2026-06-21T11:53:55.9896738Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T11:53:55.9904047Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T11:53:55.9904198Z       "requiredStages": [
2026-06-21T11:53:55.9904285Z         "doc",
2026-06-21T11:53:55.9904376Z         "impl",
2026-06-21T11:53:55.9904466Z         "unit",
2026-06-21T11:53:55.9904551Z         "int"
2026-06-21T11:53:55.9904633Z       ],
2026-06-21T11:53:55.9904719Z       "stages": {
2026-06-21T11:53:55.9904799Z         "doc": {
2026-06-21T11:53:55.9904890Z           "complete": true,
2026-06-21T11:53:55.9904976Z           "evidence": [
2026-06-21T11:53:55.9905057Z             {
2026-06-21T11:53:55.9905176Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:55.9905262Z               "line": 454
2026-06-21T11:53:55.9905348Z             }
2026-06-21T11:53:55.9905433Z           ]
2026-06-21T11:53:55.9905520Z         },
2026-06-21T11:53:55.9905611Z         "impl": {
2026-06-21T11:53:55.9905696Z           "complete": true,
2026-06-21T11:53:55.9905781Z           "evidence": [
2026-06-21T11:53:55.9905864Z             {
2026-06-21T11:53:55.9906087Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:55.9906179Z               "line": 216
2026-06-21T11:53:55.9906353Z             },
2026-06-21T11:53:55.9906440Z             {
2026-06-21T11:53:55.9906560Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:55.9906649Z               "line": 493
2026-06-21T11:53:55.9906734Z             },
2026-06-21T11:53:55.9906815Z             {
2026-06-21T11:53:55.9906926Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:55.9907006Z               "line": 1907
2026-06-21T11:53:55.9907087Z             },
2026-06-21T11:53:55.9907173Z             {
2026-06-21T11:53:55.9907288Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9907373Z               "line": 347
2026-06-21T11:53:55.9907455Z             }
2026-06-21T11:53:55.9907541Z           ]
2026-06-21T11:53:55.9907627Z         },
2026-06-21T11:53:55.9907711Z         "int": {
2026-06-21T11:53:55.9907803Z           "complete": true,
2026-06-21T11:53:55.9907903Z           "evidence": [
2026-06-21T11:53:55.9907988Z             {
2026-06-21T11:53:55.9908109Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:55.9908199Z               "line": 737
2026-06-21T11:53:55.9908285Z             },
2026-06-21T11:53:55.9908370Z             {
2026-06-21T11:53:55.9908481Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:55.9908565Z               "line": 854
2026-06-21T11:53:55.9908646Z             },
2026-06-21T11:53:55.9908728Z             {
2026-06-21T11:53:55.9908875Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:55.9909041Z               "line": 544
2026-06-21T11:53:55.9909117Z             },
2026-06-21T11:53:55.9909202Z             {
2026-06-21T11:53:55.9909353Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:55.9909435Z               "line": 1800
2026-06-21T11:53:55.9909535Z             },
2026-06-21T11:53:55.9909635Z             {
2026-06-21T11:53:55.9909774Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T11:53:55.9909869Z               "line": 266
2026-06-21T11:53:55.9909944Z             }
2026-06-21T11:53:55.9910031Z           ]
2026-06-21T11:53:55.9910107Z         },
2026-06-21T11:53:55.9910188Z         "unit": {
2026-06-21T11:53:55.9910288Z           "complete": true,
2026-06-21T11:53:55.9910365Z           "evidence": [
2026-06-21T11:53:55.9910445Z             {
2026-06-21T11:53:55.9910559Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9910651Z               "line": 1046
2026-06-21T11:53:55.9910742Z             },
2026-06-21T11:53:55.9910828Z             {
2026-06-21T11:53:55.9910927Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:55.9911014Z               "line": 1080
2026-06-21T11:53:55.9911098Z             }
2026-06-21T11:53:55.9911175Z           ]
2026-06-21T11:53:55.9911256Z         }
2026-06-21T11:53:55.9911334Z       }
2026-06-21T11:53:55.9911418Z     },
2026-06-21T11:53:55.9911509Z     {
2026-06-21T11:53:55.9911610Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T11:53:55.9912192Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T11:53:55.9912278Z       "requiredStages": [
2026-06-21T11:53:55.9912364Z         "impl",
2026-06-21T11:53:55.9912454Z         "unit"
2026-06-21T11:53:55.9912535Z       ],
2026-06-21T11:53:55.9912627Z       "stages": {
2026-06-21T11:53:55.9912708Z         "doc": {
2026-06-21T11:53:55.9912802Z           "complete": false,
2026-06-21T11:53:55.9912884Z           "evidence": []
2026-06-21T11:53:55.9912974Z         },
2026-06-21T11:53:55.9913055Z         "impl": {
2026-06-21T11:53:55.9913145Z           "complete": true,
2026-06-21T11:53:55.9913237Z           "evidence": [
2026-06-21T11:53:55.9913322Z             {
2026-06-21T11:53:55.9913557Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9913642Z               "line": 759
2026-06-21T11:53:55.9913803Z             }
2026-06-21T11:53:55.9913896Z           ]
2026-06-21T11:53:55.9913980Z         },
2026-06-21T11:53:55.9916637Z         "int": {
2026-06-21T11:53:55.9916753Z           "complete": false,
2026-06-21T11:53:55.9916852Z           "evidence": []
2026-06-21T11:53:55.9916933Z         },
2026-06-21T11:53:55.9917020Z         "unit": {
2026-06-21T11:53:55.9917115Z           "complete": true,
2026-06-21T11:53:55.9917204Z           "evidence": [
2026-06-21T11:53:55.9917294Z             {
2026-06-21T11:53:55.9917423Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:55.9917524Z               "line": 873
2026-06-21T11:53:55.9917604Z             }
2026-06-21T11:53:55.9917685Z           ]
2026-06-21T11:53:55.9917772Z         }
2026-06-21T11:53:55.9917848Z       }
2026-06-21T11:53:55.9917937Z     },
2026-06-21T11:53:55.9918025Z     {
2026-06-21T11:53:55.9918168Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T11:53:55.9920672Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T11:53:55.9920772Z       "requiredStages": [
2026-06-21T11:53:55.9920867Z         "impl",
2026-06-21T11:53:55.9920949Z         "unit",
2026-06-21T11:53:55.9921034Z         "int"
2026-06-21T11:53:55.9921124Z       ],
2026-06-21T11:53:55.9921201Z       "stages": {
2026-06-21T11:53:55.9921288Z         "doc": {
2026-06-21T11:53:55.9921373Z           "complete": false,
2026-06-21T11:53:55.9921458Z           "evidence": []
2026-06-21T11:53:55.9921545Z         },
2026-06-21T11:53:55.9921631Z         "impl": {
2026-06-21T11:53:55.9921726Z           "complete": true,
2026-06-21T11:53:55.9921802Z           "evidence": [
2026-06-21T11:53:55.9921889Z             {
2026-06-21T11:53:55.9922016Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9922107Z               "line": 705
2026-06-21T11:53:55.9922180Z             }
2026-06-21T11:53:55.9922266Z           ]
2026-06-21T11:53:55.9922349Z         },
2026-06-21T11:53:55.9922435Z         "int": {
2026-06-21T11:53:55.9922516Z           "complete": true,
2026-06-21T11:53:55.9922597Z           "evidence": [
2026-06-21T11:53:55.9922680Z             {
2026-06-21T11:53:55.9922819Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T11:53:55.9922920Z               "line": 24
2026-06-21T11:53:55.9923000Z             }
2026-06-21T11:53:55.9923071Z           ]
2026-06-21T11:53:55.9923158Z         },
2026-06-21T11:53:55.9923239Z         "unit": {
2026-06-21T11:53:55.9923338Z           "complete": true,
2026-06-21T11:53:55.9923424Z           "evidence": [
2026-06-21T11:53:55.9923507Z             {
2026-06-21T11:53:55.9923630Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9923720Z               "line": 918
2026-06-21T11:53:55.9923797Z             }
2026-06-21T11:53:55.9923877Z           ]
2026-06-21T11:53:55.9923959Z         }
2026-06-21T11:53:55.9924044Z       }
2026-06-21T11:53:55.9924131Z     },
2026-06-21T11:53:55.9924216Z     {
2026-06-21T11:53:55.9924330Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T11:53:55.9927965Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T11:53:55.9928308Z       "requiredStages": [
2026-06-21T11:53:55.9928394Z         "impl",
2026-06-21T11:53:55.9928479Z         "unit",
2026-06-21T11:53:55.9928570Z         "int"
2026-06-21T11:53:55.9928652Z       ],
2026-06-21T11:53:55.9928742Z       "stages": {
2026-06-21T11:53:55.9928813Z         "doc": {
2026-06-21T11:53:55.9928909Z           "complete": false,
2026-06-21T11:53:55.9929061Z           "evidence": []
2026-06-21T11:53:55.9929151Z         },
2026-06-21T11:53:55.9929234Z         "impl": {
2026-06-21T11:53:55.9929324Z           "complete": true,
2026-06-21T11:53:55.9929409Z           "evidence": [
2026-06-21T11:53:55.9929500Z             {
2026-06-21T11:53:55.9929615Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9929700Z               "line": 391
2026-06-21T11:53:55.9929776Z             },
2026-06-21T11:53:55.9929863Z             {
2026-06-21T11:53:55.9929976Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9930066Z               "line": 343
2026-06-21T11:53:55.9930142Z             },
2026-06-21T11:53:55.9930228Z             {
2026-06-21T11:53:55.9930336Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9930421Z               "line": 1750
2026-06-21T11:53:55.9930503Z             },
2026-06-21T11:53:55.9930589Z             {
2026-06-21T11:53:55.9930693Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9930774Z               "line": 3191
2026-06-21T11:53:55.9930855Z             }
2026-06-21T11:53:55.9930936Z           ]
2026-06-21T11:53:55.9931022Z         },
2026-06-21T11:53:55.9931103Z         "int": {
2026-06-21T11:53:55.9931185Z           "complete": true,
2026-06-21T11:53:55.9931270Z           "evidence": [
2026-06-21T11:53:55.9931351Z             {
2026-06-21T11:53:55.9931490Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T11:53:55.9931585Z               "line": 353
2026-06-21T11:53:55.9931670Z             },
2026-06-21T11:53:55.9931756Z             {
2026-06-21T11:53:55.9931900Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T11:53:55.9931985Z               "line": 23
2026-06-21T11:53:55.9932066Z             }
2026-06-21T11:53:55.9932148Z           ]
2026-06-21T11:53:55.9932238Z         },
2026-06-21T11:53:55.9932319Z         "unit": {
2026-06-21T11:53:55.9932411Z           "complete": true,
2026-06-21T11:53:55.9932497Z           "evidence": [
2026-06-21T11:53:55.9932581Z             {
2026-06-21T11:53:55.9932682Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:55.9932773Z               "line": 743
2026-06-21T11:53:55.9932858Z             },
2026-06-21T11:53:55.9932933Z             {
2026-06-21T11:53:55.9933033Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:55.9933109Z               "line": 7863
2026-06-21T11:53:55.9933307Z             }
2026-06-21T11:53:55.9933389Z           ]
2026-06-21T11:53:55.9933470Z         }
2026-06-21T11:53:55.9933646Z       }
2026-06-21T11:53:55.9933728Z     },
2026-06-21T11:53:55.9933803Z     {
2026-06-21T11:53:55.9933917Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T11:53:55.9937210Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T11:53:55.9937319Z       "requiredStages": [
2026-06-21T11:53:55.9937405Z         "impl",
2026-06-21T11:53:55.9937490Z         "unit",
2026-06-21T11:53:55.9937578Z         "int"
2026-06-21T11:53:55.9937643Z       ],
2026-06-21T11:53:55.9937729Z       "stages": {
2026-06-21T11:53:55.9937810Z         "doc": {
2026-06-21T11:53:55.9937907Z           "complete": false,
2026-06-21T11:53:55.9937991Z           "evidence": []
2026-06-21T11:53:55.9938077Z         },
2026-06-21T11:53:55.9938159Z         "impl": {
2026-06-21T11:53:55.9938240Z           "complete": true,
2026-06-21T11:53:55.9938343Z           "evidence": [
2026-06-21T11:53:55.9938423Z             {
2026-06-21T11:53:55.9938553Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9938635Z               "line": 64
2026-06-21T11:53:55.9938720Z             },
2026-06-21T11:53:55.9938801Z             {
2026-06-21T11:53:55.9938916Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9939077Z               "line": 78
2026-06-21T11:53:55.9939160Z             },
2026-06-21T11:53:55.9939240Z             {
2026-06-21T11:53:55.9939344Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9939431Z               "line": 170
2026-06-21T11:53:55.9939517Z             },
2026-06-21T11:53:55.9939597Z             {
2026-06-21T11:53:55.9939711Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9939789Z               "line": 185
2026-06-21T11:53:55.9939865Z             },
2026-06-21T11:53:55.9939945Z             {
2026-06-21T11:53:55.9940070Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9940151Z               "line": 195
2026-06-21T11:53:55.9940241Z             },
2026-06-21T11:53:55.9940317Z             {
2026-06-21T11:53:55.9940438Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9940523Z               "line": 205
2026-06-21T11:53:55.9940607Z             },
2026-06-21T11:53:55.9940679Z             {
2026-06-21T11:53:55.9940793Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9940868Z               "line": 294
2026-06-21T11:53:55.9940952Z             },
2026-06-21T11:53:55.9941033Z             {
2026-06-21T11:53:55.9941145Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9941225Z               "line": 308
2026-06-21T11:53:55.9941305Z             },
2026-06-21T11:53:55.9941392Z             {
2026-06-21T11:53:55.9941497Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9941692Z               "line": 377
2026-06-21T11:53:55.9941779Z             },
2026-06-21T11:53:55.9941864Z             {
2026-06-21T11:53:55.9942069Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9942159Z               "line": 437
2026-06-21T11:53:55.9942245Z             },
2026-06-21T11:53:55.9942326Z             {
2026-06-21T11:53:55.9942450Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9942531Z               "line": 455
2026-06-21T11:53:55.9942612Z             }
2026-06-21T11:53:55.9942689Z           ]
2026-06-21T11:53:55.9942760Z         },
2026-06-21T11:53:55.9942846Z         "int": {
2026-06-21T11:53:55.9942932Z           "complete": true,
2026-06-21T11:53:55.9943014Z           "evidence": [
2026-06-21T11:53:55.9943099Z             {
2026-06-21T11:53:55.9943227Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T11:53:55.9943310Z               "line": 45
2026-06-21T11:53:55.9943395Z             },
2026-06-21T11:53:55.9943484Z             {
2026-06-21T11:53:55.9943612Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T11:53:55.9943712Z               "line": 354
2026-06-21T11:53:55.9943792Z             },
2026-06-21T11:53:55.9943872Z             {
2026-06-21T11:53:55.9944007Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T11:53:55.9944092Z               "line": 31
2026-06-21T11:53:55.9944172Z             }
2026-06-21T11:53:55.9944254Z           ]
2026-06-21T11:53:55.9944341Z         },
2026-06-21T11:53:55.9944431Z         "unit": {
2026-06-21T11:53:55.9944516Z           "complete": true,
2026-06-21T11:53:55.9944607Z           "evidence": [
2026-06-21T11:53:55.9944688Z             {
2026-06-21T11:53:55.9944811Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:55.9944893Z               "line": 727
2026-06-21T11:53:55.9944980Z             }
2026-06-21T11:53:55.9945065Z           ]
2026-06-21T11:53:55.9945150Z         }
2026-06-21T11:53:55.9945242Z       }
2026-06-21T11:53:55.9945327Z     },
2026-06-21T11:53:55.9945413Z     {
2026-06-21T11:53:55.9945513Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T11:53:55.9945737Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T11:53:55.9945833Z       "requiredStages": [
2026-06-21T11:53:55.9945924Z         "impl",
2026-06-21T11:53:55.9946008Z         "unit"
2026-06-21T11:53:55.9946089Z       ],
2026-06-21T11:53:55.9946170Z       "stages": {
2026-06-21T11:53:55.9946251Z         "doc": {
2026-06-21T11:53:55.9946344Z           "complete": false,
2026-06-21T11:53:55.9946429Z           "evidence": []
2026-06-21T11:53:55.9946515Z         },
2026-06-21T11:53:55.9946607Z         "impl": {
2026-06-21T11:53:55.9946692Z           "complete": true,
2026-06-21T11:53:55.9946772Z           "evidence": [
2026-06-21T11:53:55.9946855Z             {
2026-06-21T11:53:55.9946964Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T11:53:55.9947054Z               "line": 14
2026-06-21T11:53:55.9947140Z             },
2026-06-21T11:53:55.9947226Z             {
2026-06-21T11:53:55.9947335Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:55.9947421Z               "line": 566
2026-06-21T11:53:55.9947503Z             }
2026-06-21T11:53:55.9947578Z           ]
2026-06-21T11:53:55.9947659Z         },
2026-06-21T11:53:55.9947745Z         "int": {
2026-06-21T11:53:55.9947842Z           "complete": false,
2026-06-21T11:53:55.9947917Z           "evidence": []
2026-06-21T11:53:55.9947998Z         },
2026-06-21T11:53:55.9948080Z         "unit": {
2026-06-21T11:53:55.9948166Z           "complete": true,
2026-06-21T11:53:55.9948246Z           "evidence": [
2026-06-21T11:53:55.9948322Z             {
2026-06-21T11:53:55.9948433Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T11:53:55.9948514Z               "line": 130
2026-06-21T11:53:55.9948594Z             },
2026-06-21T11:53:55.9948676Z             {
2026-06-21T11:53:55.9948787Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T11:53:55.9949027Z               "line": 138
2026-06-21T11:53:55.9949199Z             },
2026-06-21T11:53:55.9949280Z             {
2026-06-21T11:53:55.9949385Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T11:53:55.9949476Z               "line": 146
2026-06-21T11:53:55.9949556Z             },
2026-06-21T11:53:55.9949632Z             {
2026-06-21T11:53:55.9949739Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T11:53:55.9949824Z               "line": 154
2026-06-21T11:53:55.9949909Z             },
2026-06-21T11:53:55.9949991Z             {
2026-06-21T11:53:55.9950091Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T11:53:55.9950177Z               "line": 162
2026-06-21T11:53:55.9950262Z             },
2026-06-21T11:53:55.9950349Z             {
2026-06-21T11:53:55.9950448Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T11:53:55.9950529Z               "line": 170
2026-06-21T11:53:55.9950610Z             }
2026-06-21T11:53:55.9950693Z           ]
2026-06-21T11:53:55.9950773Z         }
2026-06-21T11:53:55.9950853Z       }
2026-06-21T11:53:55.9950935Z     },
2026-06-21T11:53:55.9951013Z     {
2026-06-21T11:53:55.9951120Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T11:53:55.9952014Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T11:53:55.9952109Z       "requiredStages": [
2026-06-21T11:53:55.9952184Z         "impl",
2026-06-21T11:53:55.9952267Z         "unit"
2026-06-21T11:53:55.9952348Z       ],
2026-06-21T11:53:55.9952433Z       "stages": {
2026-06-21T11:53:55.9952513Z         "doc": {
2026-06-21T11:53:55.9952601Z           "complete": false,
2026-06-21T11:53:55.9952686Z           "evidence": []
2026-06-21T11:53:55.9952767Z         },
2026-06-21T11:53:55.9952862Z         "impl": {
2026-06-21T11:53:55.9952944Z           "complete": true,
2026-06-21T11:53:55.9953034Z           "evidence": [
2026-06-21T11:53:55.9953120Z             {
2026-06-21T11:53:55.9953259Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9953344Z               "line": 34
2026-06-21T11:53:55.9953425Z             }
2026-06-21T11:53:55.9953511Z           ]
2026-06-21T11:53:55.9953593Z         },
2026-06-21T11:53:55.9953673Z         "int": {
2026-06-21T11:53:55.9953764Z           "complete": false,
2026-06-21T11:53:55.9953845Z           "evidence": []
2026-06-21T11:53:55.9953927Z         },
2026-06-21T11:53:55.9954006Z         "unit": {
2026-06-21T11:53:55.9954105Z           "complete": true,
2026-06-21T11:53:55.9954192Z           "evidence": [
2026-06-21T11:53:55.9954272Z             {
2026-06-21T11:53:55.9954403Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9954490Z               "line": 188
2026-06-21T11:53:55.9954577Z             },
2026-06-21T11:53:55.9954657Z             {
2026-06-21T11:53:55.9954790Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9954882Z               "line": 200
2026-06-21T11:53:55.9954967Z             },
2026-06-21T11:53:55.9955047Z             {
2026-06-21T11:53:55.9955177Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9955272Z               "line": 211
2026-06-21T11:53:55.9955357Z             },
2026-06-21T11:53:55.9955438Z             {
2026-06-21T11:53:55.9955568Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9955653Z               "line": 253
2026-06-21T11:53:55.9955734Z             },
2026-06-21T11:53:55.9955816Z             {
2026-06-21T11:53:55.9955943Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9956035Z               "line": 277
2026-06-21T11:53:55.9956117Z             },
2026-06-21T11:53:55.9956292Z             {
2026-06-21T11:53:55.9956432Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9956587Z               "line": 300
2026-06-21T11:53:55.9956672Z             },
2026-06-21T11:53:55.9956758Z             {
2026-06-21T11:53:55.9956899Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T11:53:55.9956989Z               "line": 316
2026-06-21T11:53:55.9957075Z             }
2026-06-21T11:53:55.9957157Z           ]
2026-06-21T11:53:55.9957242Z         }
2026-06-21T11:53:55.9957323Z       }
2026-06-21T11:53:55.9957410Z     },
2026-06-21T11:53:55.9957495Z     {
2026-06-21T11:53:55.9957609Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T11:53:55.9958134Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T11:53:55.9958220Z       "requiredStages": [
2026-06-21T11:53:55.9958320Z         "impl",
2026-06-21T11:53:55.9958407Z         "unit"
2026-06-21T11:53:55.9958492Z       ],
2026-06-21T11:53:55.9958582Z       "stages": {
2026-06-21T11:53:55.9958664Z         "doc": {
2026-06-21T11:53:55.9958759Z           "complete": false,
2026-06-21T11:53:55.9958835Z           "evidence": []
2026-06-21T11:53:55.9958921Z         },
2026-06-21T11:53:55.9959083Z         "impl": {
2026-06-21T11:53:55.9959169Z           "complete": true,
2026-06-21T11:53:55.9959255Z           "evidence": [
2026-06-21T11:53:55.9959337Z             {
2026-06-21T11:53:55.9959459Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9959549Z               "line": 29
2026-06-21T11:53:55.9959625Z             },
2026-06-21T11:53:55.9959717Z             {
2026-06-21T11:53:55.9959821Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9959916Z               "line": 174
2026-06-21T11:53:55.9959998Z             },
2026-06-21T11:53:55.9960079Z             {
2026-06-21T11:53:55.9960188Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9960270Z               "line": 194
2026-06-21T11:53:55.9960355Z             },
2026-06-21T11:53:55.9960441Z             {
2026-06-21T11:53:55.9960546Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9960628Z               "line": 222
2026-06-21T11:53:55.9960713Z             }
2026-06-21T11:53:55.9960793Z           ]
2026-06-21T11:53:55.9960870Z         },
2026-06-21T11:53:55.9960962Z         "int": {
2026-06-21T11:53:55.9961042Z           "complete": false,
2026-06-21T11:53:55.9961132Z           "evidence": []
2026-06-21T11:53:55.9961214Z         },
2026-06-21T11:53:55.9961290Z         "unit": {
2026-06-21T11:53:55.9961370Z           "complete": true,
2026-06-21T11:53:55.9961466Z           "evidence": [
2026-06-21T11:53:55.9961553Z             {
2026-06-21T11:53:55.9961656Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9961742Z               "line": 329
2026-06-21T11:53:55.9961827Z             },
2026-06-21T11:53:55.9961913Z             {
2026-06-21T11:53:55.9962016Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9962106Z               "line": 344
2026-06-21T11:53:55.9962187Z             },
2026-06-21T11:53:55.9962255Z             {
2026-06-21T11:53:55.9962364Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9962454Z               "line": 417
2026-06-21T11:53:55.9962541Z             },
2026-06-21T11:53:55.9962617Z             {
2026-06-21T11:53:55.9962721Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9962807Z               "line": 433
2026-06-21T11:53:55.9962889Z             },
2026-06-21T11:53:55.9962970Z             {
2026-06-21T11:53:55.9963078Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9963161Z               "line": 492
2026-06-21T11:53:55.9963246Z             },
2026-06-21T11:53:55.9963327Z             {
2026-06-21T11:53:55.9963547Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9963632Z               "line": 506
2026-06-21T11:53:55.9963786Z             },
2026-06-21T11:53:55.9963871Z             {
2026-06-21T11:53:55.9963985Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9964062Z               "line": 517
2026-06-21T11:53:55.9964148Z             },
2026-06-21T11:53:55.9964233Z             {
2026-06-21T11:53:55.9964338Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:55.9964425Z               "line": 528
2026-06-21T11:53:55.9964501Z             }
2026-06-21T11:53:55.9964586Z           ]
2026-06-21T11:53:55.9964670Z         }
2026-06-21T11:53:55.9964752Z       }
2026-06-21T11:53:55.9964837Z     },
2026-06-21T11:53:55.9964917Z     {
2026-06-21T11:53:55.9965040Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T11:53:55.9965694Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T11:53:55.9965813Z       "requiredStages": [
2026-06-21T11:53:55.9965903Z         "impl",
2026-06-21T11:53:55.9965985Z         "unit"
2026-06-21T11:53:55.9966071Z       ],
2026-06-21T11:53:55.9966161Z       "stages": {
2026-06-21T11:53:55.9966251Z         "doc": {
2026-06-21T11:53:55.9966338Z           "complete": false,
2026-06-21T11:53:55.9966429Z           "evidence": []
2026-06-21T11:53:55.9966513Z         },
2026-06-21T11:53:55.9966590Z         "impl": {
2026-06-21T11:53:55.9966686Z           "complete": true,
2026-06-21T11:53:55.9966762Z           "evidence": [
2026-06-21T11:53:55.9966842Z             {
2026-06-21T11:53:55.9966973Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9967063Z               "line": 27
2026-06-21T11:53:55.9967147Z             },
2026-06-21T11:53:55.9967228Z             {
2026-06-21T11:53:55.9967352Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9967450Z               "line": 110
2026-06-21T11:53:55.9967535Z             },
2026-06-21T11:53:55.9967622Z             {
2026-06-21T11:53:55.9967742Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9967835Z               "line": 153
2026-06-21T11:53:55.9967917Z             },
2026-06-21T11:53:55.9968004Z             {
2026-06-21T11:53:55.9968127Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9968213Z               "line": 182
2026-06-21T11:53:55.9968294Z             },
2026-06-21T11:53:55.9968375Z             {
2026-06-21T11:53:55.9968512Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9968599Z               "line": 31
2026-06-21T11:53:55.9968685Z             },
2026-06-21T11:53:55.9968766Z             {
2026-06-21T11:53:55.9968905Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9969081Z               "line": 113
2026-06-21T11:53:55.9969157Z             },
2026-06-21T11:53:55.9969239Z             {
2026-06-21T11:53:55.9969370Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9969452Z               "line": 138
2026-06-21T11:53:55.9969530Z             }
2026-06-21T11:53:55.9969611Z           ]
2026-06-21T11:53:55.9969695Z         },
2026-06-21T11:53:55.9969781Z         "int": {
2026-06-21T11:53:55.9969873Z           "complete": false,
2026-06-21T11:53:55.9969954Z           "evidence": []
2026-06-21T11:53:55.9970042Z         },
2026-06-21T11:53:55.9970123Z         "unit": {
2026-06-21T11:53:55.9970224Z           "complete": true,
2026-06-21T11:53:55.9970306Z           "evidence": [
2026-06-21T11:53:55.9970390Z             {
2026-06-21T11:53:55.9970519Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9970601Z               "line": 261
2026-06-21T11:53:55.9970681Z             },
2026-06-21T11:53:55.9970758Z             {
2026-06-21T11:53:55.9970992Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9971077Z               "line": 276
2026-06-21T11:53:55.9971249Z             },
2026-06-21T11:53:55.9971330Z             {
2026-06-21T11:53:55.9971459Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9971545Z               "line": 293
2026-06-21T11:53:55.9971631Z             },
2026-06-21T11:53:55.9971721Z             {
2026-06-21T11:53:55.9971846Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9971930Z               "line": 310
2026-06-21T11:53:55.9972012Z             },
2026-06-21T11:53:55.9972094Z             {
2026-06-21T11:53:55.9972212Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9972302Z               "line": 327
2026-06-21T11:53:55.9972392Z             },
2026-06-21T11:53:55.9972469Z             {
2026-06-21T11:53:55.9972585Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:55.9972690Z               "line": 366
2026-06-21T11:53:55.9972772Z             },
2026-06-21T11:53:55.9972858Z             {
2026-06-21T11:53:55.9972986Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9973082Z               "line": 179
2026-06-21T11:53:55.9973168Z             },
2026-06-21T11:53:55.9973248Z             {
2026-06-21T11:53:55.9973387Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9973463Z               "line": 194
2026-06-21T11:53:55.9973539Z             },
2026-06-21T11:53:55.9973620Z             {
2026-06-21T11:53:55.9973754Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9973845Z               "line": 204
2026-06-21T11:53:55.9973925Z             },
2026-06-21T11:53:55.9974011Z             {
2026-06-21T11:53:55.9974140Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9974235Z               "line": 259
2026-06-21T11:53:55.9974331Z             },
2026-06-21T11:53:55.9974408Z             {
2026-06-21T11:53:55.9974536Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9974622Z               "line": 269
2026-06-21T11:53:55.9974709Z             },
2026-06-21T11:53:55.9974788Z             {
2026-06-21T11:53:55.9974932Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:55.9975024Z               "line": 283
2026-06-21T11:53:55.9975108Z             }
2026-06-21T11:53:55.9975197Z           ]
2026-06-21T11:53:55.9975274Z         }
2026-06-21T11:53:55.9975364Z       }
2026-06-21T11:53:55.9975443Z     },
2026-06-21T11:53:55.9975524Z     {
2026-06-21T11:53:55.9975644Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T11:53:55.9975824Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T11:53:55.9975929Z       "requiredStages": [],
2026-06-21T11:53:55.9976016Z       "stages": {
2026-06-21T11:53:55.9976115Z         "doc": {
2026-06-21T11:53:55.9976196Z           "complete": false,
2026-06-21T11:53:55.9976288Z           "evidence": []
2026-06-21T11:53:55.9976383Z         },
2026-06-21T11:53:55.9976468Z         "impl": {
2026-06-21T11:53:55.9976564Z           "complete": false,
2026-06-21T11:53:55.9976650Z           "evidence": []
2026-06-21T11:53:55.9976740Z         },
2026-06-21T11:53:55.9976811Z         "int": {
2026-06-21T11:53:55.9976893Z           "complete": false,
2026-06-21T11:53:55.9976984Z           "evidence": []
2026-06-21T11:53:55.9977064Z         },
2026-06-21T11:53:55.9977155Z         "unit": {
2026-06-21T11:53:55.9977237Z           "complete": false,
2026-06-21T11:53:55.9977327Z           "evidence": []
2026-06-21T11:53:55.9977407Z         }
2026-06-21T11:53:55.9977484Z       }
2026-06-21T11:53:55.9977571Z     },
2026-06-21T11:53:55.9977647Z     {
2026-06-21T11:53:55.9977769Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T11:53:55.9978597Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T11:53:55.9978916Z       "requiredStages": [
2026-06-21T11:53:55.9979082Z         "impl",
2026-06-21T11:53:55.9979164Z         "unit"
2026-06-21T11:53:55.9979245Z       ],
2026-06-21T11:53:55.9979331Z       "stages": {
2026-06-21T11:53:55.9979421Z         "doc": {
2026-06-21T11:53:55.9979503Z           "complete": false,
2026-06-21T11:53:55.9979588Z           "evidence": []
2026-06-21T11:53:55.9979678Z         },
2026-06-21T11:53:55.9979760Z         "impl": {
2026-06-21T11:53:55.9979856Z           "complete": true,
2026-06-21T11:53:55.9979945Z           "evidence": [
2026-06-21T11:53:55.9980031Z             {
2026-06-21T11:53:55.9980152Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9980241Z               "line": 26
2026-06-21T11:53:55.9980336Z             },
2026-06-21T11:53:55.9980414Z             {
2026-06-21T11:53:55.9980542Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9980626Z               "line": 95
2026-06-21T11:53:55.9980712Z             },
2026-06-21T11:53:55.9980789Z             {
2026-06-21T11:53:55.9980904Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9980989Z               "line": 166
2026-06-21T11:53:55.9981070Z             },
2026-06-21T11:53:55.9981156Z             {
2026-06-21T11:53:55.9981260Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9981346Z               "line": 19
2026-06-21T11:53:55.9981429Z             },
2026-06-21T11:53:55.9981519Z             {
2026-06-21T11:53:55.9981632Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9981709Z               "line": 50
2026-06-21T11:53:55.9981800Z             },
2026-06-21T11:53:55.9981881Z             {
2026-06-21T11:53:55.9981995Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T11:53:55.9982087Z               "line": 18
2026-06-21T11:53:55.9982166Z             },
2026-06-21T11:53:55.9982262Z             {
2026-06-21T11:53:55.9982363Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T11:53:55.9982457Z               "line": 71
2026-06-21T11:53:55.9982534Z             },
2026-06-21T11:53:55.9982615Z             {
2026-06-21T11:53:55.9982735Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9982819Z               "line": 87
2026-06-21T11:53:55.9982900Z             }
2026-06-21T11:53:55.9982981Z           ]
2026-06-21T11:53:55.9983053Z         },
2026-06-21T11:53:55.9983136Z         "int": {
2026-06-21T11:53:55.9983231Z           "complete": false,
2026-06-21T11:53:55.9983317Z           "evidence": []
2026-06-21T11:53:55.9983404Z         },
2026-06-21T11:53:55.9983484Z         "unit": {
2026-06-21T11:53:55.9983564Z           "complete": true,
2026-06-21T11:53:55.9983646Z           "evidence": [
2026-06-21T11:53:55.9983737Z             {
2026-06-21T11:53:55.9983851Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9983947Z               "line": 289
2026-06-21T11:53:55.9984028Z             },
2026-06-21T11:53:55.9984113Z             {
2026-06-21T11:53:55.9984218Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9984305Z               "line": 314
2026-06-21T11:53:55.9984386Z             },
2026-06-21T11:53:55.9984475Z             {
2026-06-21T11:53:55.9984586Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9984671Z               "line": 350
2026-06-21T11:53:55.9984757Z             },
2026-06-21T11:53:55.9984838Z             {
2026-06-21T11:53:55.9984949Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9985034Z               "line": 418
2026-06-21T11:53:55.9985124Z             },
2026-06-21T11:53:55.9985202Z             {
2026-06-21T11:53:55.9985311Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9985512Z               "line": 429
2026-06-21T11:53:55.9985593Z             },
2026-06-21T11:53:55.9985771Z             {
2026-06-21T11:53:55.9985891Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9985980Z               "line": 460
2026-06-21T11:53:55.9986070Z             },
2026-06-21T11:53:55.9986151Z             {
2026-06-21T11:53:55.9986266Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:55.9986356Z               "line": 471
2026-06-21T11:53:55.9986441Z             },
2026-06-21T11:53:55.9986519Z             {
2026-06-21T11:53:55.9986628Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9986713Z               "line": 77
2026-06-21T11:53:55.9986795Z             },
2026-06-21T11:53:55.9986881Z             {
2026-06-21T11:53:55.9986995Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9987080Z               "line": 97
2026-06-21T11:53:55.9987163Z             },
2026-06-21T11:53:55.9987252Z             {
2026-06-21T11:53:55.9987372Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9987453Z               "line": 112
2026-06-21T11:53:55.9987534Z             },
2026-06-21T11:53:55.9987615Z             {
2026-06-21T11:53:55.9987729Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9987812Z               "line": 123
2026-06-21T11:53:55.9987896Z             },
2026-06-21T11:53:55.9987977Z             {
2026-06-21T11:53:55.9988083Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9988164Z               "line": 130
2026-06-21T11:53:55.9988249Z             },
2026-06-21T11:53:55.9988334Z             {
2026-06-21T11:53:55.9988439Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T11:53:55.9988528Z               "line": 145
2026-06-21T11:53:55.9988608Z             },
2026-06-21T11:53:55.9988679Z             {
2026-06-21T11:53:55.9988789Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T11:53:55.9988885Z               "line": 115
2026-06-21T11:53:55.9989032Z             },
2026-06-21T11:53:55.9989119Z             {
2026-06-21T11:53:55.9989233Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T11:53:55.9989323Z               "line": 130
2026-06-21T11:53:55.9991892Z             },
2026-06-21T11:53:55.9992008Z             {
2026-06-21T11:53:55.9992126Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:55.9992221Z               "line": 428
2026-06-21T11:53:55.9992303Z             }
2026-06-21T11:53:55.9992388Z           ]
2026-06-21T11:53:55.9992474Z         }
2026-06-21T11:53:55.9992550Z       }
2026-06-21T11:53:55.9992633Z     },
2026-06-21T11:53:55.9992717Z     {
2026-06-21T11:53:55.9992846Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T11:53:55.9999197Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T11:53:55.9999554Z       "requiredStages": [
2026-06-21T11:53:55.9999655Z         "impl",
2026-06-21T11:53:55.9999741Z         "unit",
2026-06-21T11:53:55.9999816Z         "int"
2026-06-21T11:53:55.9999907Z       ],
2026-06-21T11:53:55.9999989Z       "stages": {
2026-06-21T11:53:56.0000070Z         "doc": {
2026-06-21T11:53:56.0000169Z           "complete": false,
2026-06-21T11:53:56.0000261Z           "evidence": []
2026-06-21T11:53:56.0000337Z         },
2026-06-21T11:53:56.0000422Z         "impl": {
2026-06-21T11:53:56.0000503Z           "complete": true,
2026-06-21T11:53:56.0000590Z           "evidence": [
2026-06-21T11:53:56.0000675Z             {
2026-06-21T11:53:56.0000804Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0000895Z               "line": 1021
2026-06-21T11:53:56.0000976Z             },
2026-06-21T11:53:56.0001061Z             {
2026-06-21T11:53:56.0001161Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0001258Z               "line": 322
2026-06-21T11:53:56.0001342Z             }
2026-06-21T11:53:56.0001424Z           ]
2026-06-21T11:53:56.0001510Z         },
2026-06-21T11:53:56.0001582Z         "int": {
2026-06-21T11:53:56.0001685Z           "complete": true,
2026-06-21T11:53:56.0001761Z           "evidence": [
2026-06-21T11:53:56.0001842Z             {
2026-06-21T11:53:56.0001986Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:56.0002075Z               "line": 1983
2026-06-21T11:53:56.0002161Z             }
2026-06-21T11:53:56.0002248Z           ]
2026-06-21T11:53:56.0002325Z         },
2026-06-21T11:53:56.0002409Z         "unit": {
2026-06-21T11:53:56.0002506Z           "complete": true,
2026-06-21T11:53:56.0002596Z           "evidence": [
2026-06-21T11:53:56.0002682Z             {
2026-06-21T11:53:56.0002800Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0002882Z               "line": 2843
2026-06-21T11:53:56.0002967Z             },
2026-06-21T11:53:56.0003043Z             {
2026-06-21T11:53:56.0003154Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0003249Z               "line": 2907
2026-06-21T11:53:56.0003340Z             },
2026-06-21T11:53:56.0003421Z             {
2026-06-21T11:53:56.0003526Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0003615Z               "line": 2962
2026-06-21T11:53:56.0003696Z             }
2026-06-21T11:53:56.0003774Z           ]
2026-06-21T11:53:56.0003855Z         }
2026-06-21T11:53:56.0003940Z       }
2026-06-21T11:53:56.0004016Z     },
2026-06-21T11:53:56.0004097Z     {
2026-06-21T11:53:56.0004206Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T11:53:56.0005043Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T11:53:56.0005144Z       "requiredStages": [
2026-06-21T11:53:56.0005314Z         "doc",
2026-06-21T11:53:56.0005401Z         "impl",
2026-06-21T11:53:56.0005487Z         "unit"
2026-06-21T11:53:56.0005629Z       ],
2026-06-21T11:53:56.0005707Z       "stages": {
2026-06-21T11:53:56.0005792Z         "doc": {
2026-06-21T11:53:56.0005892Z           "complete": true,
2026-06-21T11:53:56.0005982Z           "evidence": [
2026-06-21T11:53:56.0006065Z             {
2026-06-21T11:53:56.0006187Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0006273Z               "line": 374
2026-06-21T11:53:56.0006360Z             }
2026-06-21T11:53:56.0006436Z           ]
2026-06-21T11:53:56.0006521Z         },
2026-06-21T11:53:56.0006607Z         "impl": {
2026-06-21T11:53:56.0006694Z           "complete": true,
2026-06-21T11:53:56.0006783Z           "evidence": [
2026-06-21T11:53:56.0006859Z             {
2026-06-21T11:53:56.0006978Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0007064Z               "line": 206
2026-06-21T11:53:56.0007152Z             },
2026-06-21T11:53:56.0007237Z             {
2026-06-21T11:53:56.0007348Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0007439Z               "line": 310
2026-06-21T11:53:56.0007524Z             },
2026-06-21T11:53:56.0007605Z             {
2026-06-21T11:53:56.0007715Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0007791Z               "line": 568
2026-06-21T11:53:56.0007876Z             },
2026-06-21T11:53:56.0007959Z             {
2026-06-21T11:53:56.0008063Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0008153Z               "line": 583
2026-06-21T11:53:56.0008235Z             },
2026-06-21T11:53:56.0008312Z             {
2026-06-21T11:53:56.0008425Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0008506Z               "line": 1264
2026-06-21T11:53:56.0008588Z             },
2026-06-21T11:53:56.0008669Z             {
2026-06-21T11:53:56.0008787Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0008884Z               "line": 443
2026-06-21T11:53:56.0009044Z             },
2026-06-21T11:53:56.0009131Z             {
2026-06-21T11:53:56.0009256Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0009341Z               "line": 590
2026-06-21T11:53:56.0009426Z             },
2026-06-21T11:53:56.0009506Z             {
2026-06-21T11:53:56.0009620Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0009704Z               "line": 731
2026-06-21T11:53:56.0009785Z             }
2026-06-21T11:53:56.0009871Z           ]
2026-06-21T11:53:56.0009948Z         },
2026-06-21T11:53:56.0010033Z         "int": {
2026-06-21T11:53:56.0010114Z           "complete": false,
2026-06-21T11:53:56.0010211Z           "evidence": []
2026-06-21T11:53:56.0010287Z         },
2026-06-21T11:53:56.0010367Z         "unit": {
2026-06-21T11:53:56.0010453Z           "complete": true,
2026-06-21T11:53:56.0010540Z           "evidence": [
2026-06-21T11:53:56.0010620Z             {
2026-06-21T11:53:56.0010725Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0010826Z               "line": 1155
2026-06-21T11:53:56.0010906Z             },
2026-06-21T11:53:56.0010992Z             {
2026-06-21T11:53:56.0011126Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T11:53:56.0011202Z               "line": 30
2026-06-21T11:53:56.0011283Z             }
2026-06-21T11:53:56.0011354Z           ]
2026-06-21T11:53:56.0011441Z         }
2026-06-21T11:53:56.0011522Z       }
2026-06-21T11:53:56.0011597Z     },
2026-06-21T11:53:56.0011683Z     {
2026-06-21T11:53:56.0011794Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T11:53:56.0015079Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T11:53:56.0015385Z       "requiredStages": [
2026-06-21T11:53:56.0015470Z         "impl",
2026-06-21T11:53:56.0015550Z         "unit",
2026-06-21T11:53:56.0015637Z         "int"
2026-06-21T11:53:56.0015718Z       ],
2026-06-21T11:53:56.0015818Z       "stages": {
2026-06-21T11:53:56.0015913Z         "doc": {
2026-06-21T11:53:56.0016000Z           "complete": false,
2026-06-21T11:53:56.0016090Z           "evidence": []
2026-06-21T11:53:56.0016170Z         },
2026-06-21T11:53:56.0016252Z         "impl": {
2026-06-21T11:53:56.0016334Z           "complete": true,
2026-06-21T11:53:56.0016429Z           "evidence": [
2026-06-21T11:53:56.0016514Z             {
2026-06-21T11:53:56.0016620Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0016714Z               "line": 718
2026-06-21T11:53:56.0016795Z             },
2026-06-21T11:53:56.0016887Z             {
2026-06-21T11:53:56.0016987Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0017066Z               "line": 887
2026-06-21T11:53:56.0017158Z             }
2026-06-21T11:53:56.0017235Z           ]
2026-06-21T11:53:56.0017311Z         },
2026-06-21T11:53:56.0017395Z         "int": {
2026-06-21T11:53:56.0017480Z           "complete": true,
2026-06-21T11:53:56.0017576Z           "evidence": [
2026-06-21T11:53:56.0017656Z             {
2026-06-21T11:53:56.0017779Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:56.0017869Z               "line": 420
2026-06-21T11:53:56.0017956Z             }
2026-06-21T11:53:56.0018041Z           ]
2026-06-21T11:53:56.0018122Z         },
2026-06-21T11:53:56.0018204Z         "unit": {
2026-06-21T11:53:56.0018289Z           "complete": true,
2026-06-21T11:53:56.0018374Z           "evidence": [
2026-06-21T11:53:56.0018446Z             {
2026-06-21T11:53:56.0018548Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0018623Z               "line": 1072
2026-06-21T11:53:56.0018703Z             },
2026-06-21T11:53:56.0018785Z             {
2026-06-21T11:53:56.0018891Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0019047Z               "line": 1096
2026-06-21T11:53:56.0019139Z             }
2026-06-21T11:53:56.0019220Z           ]
2026-06-21T11:53:56.0019299Z         }
2026-06-21T11:53:56.0019386Z       }
2026-06-21T11:53:56.0019463Z     },
2026-06-21T11:53:56.0019544Z     {
2026-06-21T11:53:56.0019677Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T11:53:56.0023277Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T11:53:56.0023592Z       "requiredStages": [
2026-06-21T11:53:56.0023678Z         "impl",
2026-06-21T11:53:56.0023759Z         "unit",
2026-06-21T11:53:56.0023844Z         "int"
2026-06-21T11:53:56.0023930Z       ],
2026-06-21T11:53:56.0024021Z       "stages": {
2026-06-21T11:53:56.0024092Z         "doc": {
2026-06-21T11:53:56.0024183Z           "complete": false,
2026-06-21T11:53:56.0024270Z           "evidence": []
2026-06-21T11:53:56.0024351Z         },
2026-06-21T11:53:56.0024436Z         "impl": {
2026-06-21T11:53:56.0024531Z           "complete": true,
2026-06-21T11:53:56.0024623Z           "evidence": [
2026-06-21T11:53:56.0024703Z             {
2026-06-21T11:53:56.0024808Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0024889Z               "line": 1417
2026-06-21T11:53:56.0024975Z             },
2026-06-21T11:53:56.0025055Z             {
2026-06-21T11:53:56.0025160Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0025241Z               "line": 1441
2026-06-21T11:53:56.0025321Z             }
2026-06-21T11:53:56.0025405Z           ]
2026-06-21T11:53:56.0025481Z         },
2026-06-21T11:53:56.0025563Z         "int": {
2026-06-21T11:53:56.0025644Z           "complete": true,
2026-06-21T11:53:56.0025739Z           "evidence": [
2026-06-21T11:53:56.0025820Z             {
2026-06-21T11:53:56.0025935Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T11:53:56.0026030Z               "line": 329
2026-06-21T11:53:56.0026115Z             }
2026-06-21T11:53:56.0026207Z           ]
2026-06-21T11:53:56.0026288Z         },
2026-06-21T11:53:56.0026373Z         "unit": {
2026-06-21T11:53:56.0026464Z           "complete": true,
2026-06-21T11:53:56.0026555Z           "evidence": [
2026-06-21T11:53:56.0026640Z             {
2026-06-21T11:53:56.0026735Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0026827Z               "line": 8169
2026-06-21T11:53:56.0026898Z             }
2026-06-21T11:53:56.0026989Z           ]
2026-06-21T11:53:56.0027069Z         }
2026-06-21T11:53:56.0027142Z       }
2026-06-21T11:53:56.0027227Z     },
2026-06-21T11:53:56.0027307Z     {
2026-06-21T11:53:56.0027408Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T11:53:56.0031402Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T11:53:56.0031712Z       "requiredStages": [
2026-06-21T11:53:56.0031797Z         "impl",
2026-06-21T11:53:56.0031883Z         "unit"
2026-06-21T11:53:56.0031960Z       ],
2026-06-21T11:53:56.0032050Z       "stages": {
2026-06-21T11:53:56.0032131Z         "doc": {
2026-06-21T11:53:56.0032217Z           "complete": false,
2026-06-21T11:53:56.0032314Z           "evidence": []
2026-06-21T11:53:56.0032398Z         },
2026-06-21T11:53:56.0032479Z         "impl": {
2026-06-21T11:53:56.0032561Z           "complete": true,
2026-06-21T11:53:56.0032647Z           "evidence": [
2026-06-21T11:53:56.0032722Z             {
2026-06-21T11:53:56.0032823Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0032905Z               "line": 910
2026-06-21T11:53:56.0032985Z             }
2026-06-21T11:53:56.0033070Z           ]
2026-06-21T11:53:56.0033157Z         },
2026-06-21T11:53:56.0033244Z         "int": {
2026-06-21T11:53:56.0033319Z           "complete": false,
2026-06-21T11:53:56.0033408Z           "evidence": []
2026-06-21T11:53:56.0033493Z         },
2026-06-21T11:53:56.0033575Z         "unit": {
2026-06-21T11:53:56.0033662Z           "complete": true,
2026-06-21T11:53:56.0033746Z           "evidence": [
2026-06-21T11:53:56.0033832Z             {
2026-06-21T11:53:56.0033933Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0034014Z               "line": 1112
2026-06-21T11:53:56.0034104Z             }
2026-06-21T11:53:56.0034171Z           ]
2026-06-21T11:53:56.0034257Z         }
2026-06-21T11:53:56.0034329Z       }
2026-06-21T11:53:56.0034414Z     },
2026-06-21T11:53:56.0034491Z     {
2026-06-21T11:53:56.0034610Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T11:53:56.0039290Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T11:53:56.0039434Z       "requiredStages": [
2026-06-21T11:53:56.0039523Z         "impl",
2026-06-21T11:53:56.0039615Z         "unit"
2026-06-21T11:53:56.0039701Z       ],
2026-06-21T11:53:56.0039787Z       "stages": {
2026-06-21T11:53:56.0039866Z         "doc": {
2026-06-21T11:53:56.0039963Z           "complete": false,
2026-06-21T11:53:56.0040053Z           "evidence": []
2026-06-21T11:53:56.0040134Z         },
2026-06-21T11:53:56.0040220Z         "impl": {
2026-06-21T11:53:56.0040312Z           "complete": true,
2026-06-21T11:53:56.0040396Z           "evidence": [
2026-06-21T11:53:56.0040579Z             {
2026-06-21T11:53:56.0040683Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0040768Z               "line": 264
2026-06-21T11:53:56.0040932Z             }
2026-06-21T11:53:56.0041017Z           ]
2026-06-21T11:53:56.0041101Z         },
2026-06-21T11:53:56.0041186Z         "int": {
2026-06-21T11:53:56.0041273Z           "complete": false,
2026-06-21T11:53:56.0041357Z           "evidence": []
2026-06-21T11:53:56.0041432Z         },
2026-06-21T11:53:56.0041518Z         "unit": {
2026-06-21T11:53:56.0041605Z           "complete": true,
2026-06-21T11:53:56.0041695Z           "evidence": [
2026-06-21T11:53:56.0041771Z             {
2026-06-21T11:53:56.0041876Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0041962Z               "line": 1094
2026-06-21T11:53:56.0042043Z             },
2026-06-21T11:53:56.0042128Z             {
2026-06-21T11:53:56.0042225Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0042315Z               "line": 1225
2026-06-21T11:53:56.0042405Z             },
2026-06-21T11:53:56.0042487Z             {
2026-06-21T11:53:56.0042587Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0042682Z               "line": 1227
2026-06-21T11:53:56.0042763Z             }
2026-06-21T11:53:56.0042840Z           ]
2026-06-21T11:53:56.0042925Z         }
2026-06-21T11:53:56.0043011Z       }
2026-06-21T11:53:56.0043087Z     },
2026-06-21T11:53:56.0043179Z     {
2026-06-21T11:53:56.0043287Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T11:53:56.0043541Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T11:53:56.0043635Z       "requiredStages": [
2026-06-21T11:53:56.0043722Z         "impl",
2026-06-21T11:53:56.0043804Z         "unit"
2026-06-21T11:53:56.0043888Z       ],
2026-06-21T11:53:56.0043968Z       "stages": {
2026-06-21T11:53:56.0044053Z         "doc": {
2026-06-21T11:53:56.0044150Z           "complete": true,
2026-06-21T11:53:56.0044231Z           "evidence": [
2026-06-21T11:53:56.0044335Z             {
2026-06-21T11:53:56.0044445Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0044536Z               "line": 139
2026-06-21T11:53:56.0044626Z             }
2026-06-21T11:53:56.0044702Z           ]
2026-06-21T11:53:56.0044785Z         },
2026-06-21T11:53:56.0044870Z         "impl": {
2026-06-21T11:53:56.0044964Z           "complete": true,
2026-06-21T11:53:56.0045065Z           "evidence": [
2026-06-21T11:53:56.0045146Z             {
2026-06-21T11:53:56.0045265Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T11:53:56.0045356Z               "line": 29
2026-06-21T11:53:56.0045438Z             },
2026-06-21T11:53:56.0045508Z             {
2026-06-21T11:53:56.0045613Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T11:53:56.0045695Z               "line": 67
2026-06-21T11:53:56.0045780Z             },
2026-06-21T11:53:56.0045866Z             {
2026-06-21T11:53:56.0045971Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0046072Z               "line": 101
2026-06-21T11:53:56.0046156Z             },
2026-06-21T11:53:56.0046251Z             {
2026-06-21T11:53:56.0046375Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0046450Z               "line": 30
2026-06-21T11:53:56.0046530Z             },
2026-06-21T11:53:56.0046601Z             {
2026-06-21T11:53:56.0046716Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0046803Z               "line": 48
2026-06-21T11:53:56.0046892Z             }
2026-06-21T11:53:56.0046973Z           ]
2026-06-21T11:53:56.0047055Z         },
2026-06-21T11:53:56.0047145Z         "int": {
2026-06-21T11:53:56.0047230Z           "complete": false,
2026-06-21T11:53:56.0047327Z           "evidence": []
2026-06-21T11:53:56.0047413Z         },
2026-06-21T11:53:56.0047503Z         "unit": {
2026-06-21T11:53:56.0047603Z           "complete": true,
2026-06-21T11:53:56.0047685Z           "evidence": [
2026-06-21T11:53:56.0047846Z             {
2026-06-21T11:53:56.0047957Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0048118Z               "line": 162
2026-06-21T11:53:56.0048203Z             }
2026-06-21T11:53:56.0048291Z           ]
2026-06-21T11:53:56.0048371Z         }
2026-06-21T11:53:56.0048452Z       }
2026-06-21T11:53:56.0048533Z     },
2026-06-21T11:53:56.0048615Z     {
2026-06-21T11:53:56.0048733Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T11:53:56.0049175Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T11:53:56.0049285Z       "requiredStages": [
2026-06-21T11:53:56.0049369Z         "doc",
2026-06-21T11:53:56.0049449Z         "impl",
2026-06-21T11:53:56.0049536Z         "unit"
2026-06-21T11:53:56.0049618Z       ],
2026-06-21T11:53:56.0049703Z       "stages": {
2026-06-21T11:53:56.0049783Z         "doc": {
2026-06-21T11:53:56.0049875Z           "complete": true,
2026-06-21T11:53:56.0049974Z           "evidence": [
2026-06-21T11:53:56.0050060Z             {
2026-06-21T11:53:56.0050165Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0050256Z               "line": 151
2026-06-21T11:53:56.0050342Z             }
2026-06-21T11:53:56.0050417Z           ]
2026-06-21T11:53:56.0050499Z         },
2026-06-21T11:53:56.0050585Z         "impl": {
2026-06-21T11:53:56.0050666Z           "complete": true,
2026-06-21T11:53:56.0050746Z           "evidence": [
2026-06-21T11:53:56.0050829Z             {
2026-06-21T11:53:56.0050942Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0051023Z               "line": 22
2026-06-21T11:53:56.0051109Z             }
2026-06-21T11:53:56.0051186Z           ]
2026-06-21T11:53:56.0051262Z         },
2026-06-21T11:53:56.0051338Z         "int": {
2026-06-21T11:53:56.0051420Z           "complete": false,
2026-06-21T11:53:56.0051501Z           "evidence": []
2026-06-21T11:53:56.0051586Z         },
2026-06-21T11:53:56.0051675Z         "unit": {
2026-06-21T11:53:56.0051771Z           "complete": true,
2026-06-21T11:53:56.0051852Z           "evidence": [
2026-06-21T11:53:56.0051936Z             {
2026-06-21T11:53:56.0052040Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0052140Z               "line": 298
2026-06-21T11:53:56.0052228Z             }
2026-06-21T11:53:56.0052302Z           ]
2026-06-21T11:53:56.0052388Z         }
2026-06-21T11:53:56.0052470Z       }
2026-06-21T11:53:56.0052546Z     },
2026-06-21T11:53:56.0052626Z     {
2026-06-21T11:53:56.0052747Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T11:53:56.0053189Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T11:53:56.0053289Z       "requiredStages": [
2026-06-21T11:53:56.0053376Z         "impl",
2026-06-21T11:53:56.0053457Z         "unit"
2026-06-21T11:53:56.0053538Z       ],
2026-06-21T11:53:56.0053623Z       "stages": {
2026-06-21T11:53:56.0053720Z         "doc": {
2026-06-21T11:53:56.0053805Z           "complete": true,
2026-06-21T11:53:56.0053900Z           "evidence": [
2026-06-21T11:53:56.0053981Z             {
2026-06-21T11:53:56.0054087Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0054166Z               "line": 145
2026-06-21T11:53:56.0054253Z             }
2026-06-21T11:53:56.0054340Z           ]
2026-06-21T11:53:56.0054426Z         },
2026-06-21T11:53:56.0054495Z         "impl": {
2026-06-21T11:53:56.0054576Z           "complete": true,
2026-06-21T11:53:56.0054666Z           "evidence": [
2026-06-21T11:53:56.0054748Z             {
2026-06-21T11:53:56.0054866Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T11:53:56.0054952Z               "line": 160
2026-06-21T11:53:56.0055035Z             },
2026-06-21T11:53:56.0055120Z             {
2026-06-21T11:53:56.0055252Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0055340Z               "line": 200
2026-06-21T11:53:56.0055539Z             },
2026-06-21T11:53:56.0055625Z             {
2026-06-21T11:53:56.0055820Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0055916Z               "line": 298
2026-06-21T11:53:56.0055989Z             },
2026-06-21T11:53:56.0056073Z             {
2026-06-21T11:53:56.0056178Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T11:53:56.0056260Z               "line": 20
2026-06-21T11:53:56.0056336Z             }
2026-06-21T11:53:56.0056426Z           ]
2026-06-21T11:53:56.0056512Z         },
2026-06-21T11:53:56.0056584Z         "int": {
2026-06-21T11:53:56.0056679Z           "complete": false,
2026-06-21T11:53:56.0056764Z           "evidence": []
2026-06-21T11:53:56.0056844Z         },
2026-06-21T11:53:56.0056926Z         "unit": {
2026-06-21T11:53:56.0057020Z           "complete": true,
2026-06-21T11:53:56.0057114Z           "evidence": [
2026-06-21T11:53:56.0057200Z             {
2026-06-21T11:53:56.0057339Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0057429Z               "line": 937
2026-06-21T11:53:56.0057515Z             },
2026-06-21T11:53:56.0057587Z             {
2026-06-21T11:53:56.0057710Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T11:53:56.0057795Z               "line": 88
2026-06-21T11:53:56.0057873Z             },
2026-06-21T11:53:56.0057963Z             {
2026-06-21T11:53:56.0058082Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0058163Z               "line": 851
2026-06-21T11:53:56.0058240Z             },
2026-06-21T11:53:56.0058330Z             {
2026-06-21T11:53:56.0058449Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0058531Z               "line": 870
2026-06-21T11:53:56.0058616Z             },
2026-06-21T11:53:56.0058692Z             {
2026-06-21T11:53:56.0058817Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.0058907Z               "line": 279
2026-06-21T11:53:56.0059074Z             },
2026-06-21T11:53:56.0059156Z             {
2026-06-21T11:53:56.0059274Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T11:53:56.0059370Z               "line": 82
2026-06-21T11:53:56.0059446Z             },
2026-06-21T11:53:56.0059528Z             {
2026-06-21T11:53:56.0059636Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T11:53:56.0059726Z               "line": 99
2026-06-21T11:53:56.0059812Z             },
2026-06-21T11:53:56.0059892Z             {
2026-06-21T11:53:56.0060000Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T11:53:56.0060081Z               "line": 119
2026-06-21T11:53:56.0060158Z             }
2026-06-21T11:53:56.0060244Z           ]
2026-06-21T11:53:56.0060329Z         }
2026-06-21T11:53:56.0060425Z       }
2026-06-21T11:53:56.0060507Z     },
2026-06-21T11:53:56.0060592Z     {
2026-06-21T11:53:56.0060706Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T11:53:56.0062019Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T11:53:56.0062132Z       "requiredStages": [
2026-06-21T11:53:56.0062216Z         "doc",
2026-06-21T11:53:56.0062306Z         "impl",
2026-06-21T11:53:56.0062388Z         "unit"
2026-06-21T11:53:56.0062473Z       ],
2026-06-21T11:53:56.0062552Z       "stages": {
2026-06-21T11:53:56.0062633Z         "doc": {
2026-06-21T11:53:56.0062730Z           "complete": true,
2026-06-21T11:53:56.0062816Z           "evidence": [
2026-06-21T11:53:56.0062895Z             {
2026-06-21T11:53:56.0063001Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0063191Z               "line": 157
2026-06-21T11:53:56.0063282Z             }
2026-06-21T11:53:56.0063364Z           ]
2026-06-21T11:53:56.0063525Z         },
2026-06-21T11:53:56.0063612Z         "impl": {
2026-06-21T11:53:56.0063712Z           "complete": true,
2026-06-21T11:53:56.0063798Z           "evidence": [
2026-06-21T11:53:56.0063878Z             {
2026-06-21T11:53:56.0064013Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T11:53:56.0064098Z               "line": 137
2026-06-21T11:53:56.0064173Z             },
2026-06-21T11:53:56.0064251Z             {
2026-06-21T11:53:56.0064384Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0064469Z               "line": 564
2026-06-21T11:53:56.0064551Z             },
2026-06-21T11:53:56.0064638Z             {
2026-06-21T11:53:56.0064750Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0064842Z               "line": 571
2026-06-21T11:53:56.0064924Z             },
2026-06-21T11:53:56.0065009Z             {
2026-06-21T11:53:56.0065117Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0065212Z               "line": 227
2026-06-21T11:53:56.0065303Z             }
2026-06-21T11:53:56.0065384Z           ]
2026-06-21T11:53:56.0065460Z         },
2026-06-21T11:53:56.0065546Z         "int": {
2026-06-21T11:53:56.0065642Z           "complete": false,
2026-06-21T11:53:56.0065718Z           "evidence": []
2026-06-21T11:53:56.0065808Z         },
2026-06-21T11:53:56.0065895Z         "unit": {
2026-06-21T11:53:56.0065975Z           "complete": true,
2026-06-21T11:53:56.0066065Z           "evidence": [
2026-06-21T11:53:56.0066142Z             {
2026-06-21T11:53:56.0066271Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0066362Z               "line": 1622
2026-06-21T11:53:56.0066443Z             },
2026-06-21T11:53:56.0066534Z             {
2026-06-21T11:53:56.0066652Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0066748Z               "line": 1680
2026-06-21T11:53:56.0066830Z             },
2026-06-21T11:53:56.0066920Z             {
2026-06-21T11:53:56.0067038Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0067125Z               "line": 883
2026-06-21T11:53:56.0067211Z             }
2026-06-21T11:53:56.0067295Z           ]
2026-06-21T11:53:56.0067376Z         }
2026-06-21T11:53:56.0067448Z       }
2026-06-21T11:53:56.0067533Z     },
2026-06-21T11:53:56.0067617Z     {
2026-06-21T11:53:56.0067731Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T11:53:56.0067927Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T11:53:56.0068017Z       "requiredStages": [
2026-06-21T11:53:56.0068098Z         "impl",
2026-06-21T11:53:56.0068185Z         "unit"
2026-06-21T11:53:56.0068265Z       ],
2026-06-21T11:53:56.0068346Z       "stages": {
2026-06-21T11:53:56.0068428Z         "doc": {
2026-06-21T11:53:56.0068523Z           "complete": false,
2026-06-21T11:53:56.0068613Z           "evidence": []
2026-06-21T11:53:56.0068699Z         },
2026-06-21T11:53:56.0068791Z         "impl": {
2026-06-21T11:53:56.0068881Z           "complete": true,
2026-06-21T11:53:56.0069053Z           "evidence": [
2026-06-21T11:53:56.0069138Z             {
2026-06-21T11:53:56.0069262Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0069348Z               "line": 15
2026-06-21T11:53:56.0069435Z             },
2026-06-21T11:53:56.0069515Z             {
2026-06-21T11:53:56.0069639Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0069716Z               "line": 55
2026-06-21T11:53:56.0069806Z             },
2026-06-21T11:53:56.0069891Z             {
2026-06-21T11:53:56.0070002Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0070083Z               "line": 66
2026-06-21T11:53:56.0070172Z             },
2026-06-21T11:53:56.0070252Z             {
2026-06-21T11:53:56.0070466Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0070556Z               "line": 115
2026-06-21T11:53:56.0070733Z             },
2026-06-21T11:53:56.0070813Z             {
2026-06-21T11:53:56.0070922Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0071000Z               "line": 138
2026-06-21T11:53:56.0071085Z             }
2026-06-21T11:53:56.0071170Z           ]
2026-06-21T11:53:56.0071251Z         },
2026-06-21T11:53:56.0071338Z         "int": {
2026-06-21T11:53:56.0071424Z           "complete": false,
2026-06-21T11:53:56.0071519Z           "evidence": []
2026-06-21T11:53:56.0071600Z         },
2026-06-21T11:53:56.0071677Z         "unit": {
2026-06-21T11:53:56.0071757Z           "complete": true,
2026-06-21T11:53:56.0071852Z           "evidence": [
2026-06-21T11:53:56.0071934Z             {
2026-06-21T11:53:56.0072034Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0072124Z               "line": 363
2026-06-21T11:53:56.0072210Z             },
2026-06-21T11:53:56.0072293Z             {
2026-06-21T11:53:56.0072410Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0072487Z               "line": 369
2026-06-21T11:53:56.0072574Z             },
2026-06-21T11:53:56.0072654Z             {
2026-06-21T11:53:56.0072758Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0072838Z               "line": 383
2026-06-21T11:53:56.0072929Z             },
2026-06-21T11:53:56.0073014Z             {
2026-06-21T11:53:56.0073122Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0073213Z               "line": 392
2026-06-21T11:53:56.0073295Z             },
2026-06-21T11:53:56.0073376Z             {
2026-06-21T11:53:56.0073489Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0073571Z               "line": 195
2026-06-21T11:53:56.0073661Z             },
2026-06-21T11:53:56.0073742Z             {
2026-06-21T11:53:56.0073857Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0073943Z               "line": 208
2026-06-21T11:53:56.0074029Z             },
2026-06-21T11:53:56.0074118Z             {
2026-06-21T11:53:56.0074234Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0074324Z               "line": 271
2026-06-21T11:53:56.0074395Z             },
2026-06-21T11:53:56.0074481Z             {
2026-06-21T11:53:56.0074591Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0074682Z               "line": 290
2026-06-21T11:53:56.0074758Z             },
2026-06-21T11:53:56.0074849Z             {
2026-06-21T11:53:56.0074963Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0075048Z               "line": 319
2026-06-21T11:53:56.0075131Z             }
2026-06-21T11:53:56.0075203Z           ]
2026-06-21T11:53:56.0075292Z         }
2026-06-21T11:53:56.0075373Z       }
2026-06-21T11:53:56.0075460Z     },
2026-06-21T11:53:56.0075546Z     {
2026-06-21T11:53:56.0075653Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T11:53:56.0075921Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T11:53:56.0076010Z       "requiredStages": [
2026-06-21T11:53:56.0076102Z         "impl",
2026-06-21T11:53:56.0076179Z         "unit",
2026-06-21T11:53:56.0076264Z         "int"
2026-06-21T11:53:56.0079050Z       ],
2026-06-21T11:53:56.0079159Z       "stages": {
2026-06-21T11:53:56.0079249Z         "doc": {
2026-06-21T11:53:56.0079346Z           "complete": false,
2026-06-21T11:53:56.0079441Z           "evidence": []
2026-06-21T11:53:56.0079526Z         },
2026-06-21T11:53:56.0079608Z         "impl": {
2026-06-21T11:53:56.0079708Z           "complete": true,
2026-06-21T11:53:56.0079789Z           "evidence": [
2026-06-21T11:53:56.0079865Z             {
2026-06-21T11:53:56.0079995Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0080079Z               "line": 480
2026-06-21T11:53:56.0080296Z             },
2026-06-21T11:53:56.0080375Z             {
2026-06-21T11:53:56.0080495Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0080685Z               "line": 956
2026-06-21T11:53:56.0080765Z             },
2026-06-21T11:53:56.0080846Z             {
2026-06-21T11:53:56.0080965Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0081049Z               "line": 1001
2026-06-21T11:53:56.0081139Z             },
2026-06-21T11:53:56.0081211Z             {
2026-06-21T11:53:56.0081322Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0081416Z               "line": 1026
2026-06-21T11:53:56.0081516Z             },
2026-06-21T11:53:56.0081607Z             {
2026-06-21T11:53:56.0081726Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0081816Z               "line": 1845
2026-06-21T11:53:56.0081899Z             },
2026-06-21T11:53:56.0081974Z             {
2026-06-21T11:53:56.0082088Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0082184Z               "line": 2122
2026-06-21T11:53:56.0082275Z             },
2026-06-21T11:53:56.0082360Z             {
2026-06-21T11:53:56.0082470Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0082561Z               "line": 2253
2026-06-21T11:53:56.0082642Z             },
2026-06-21T11:53:56.0082723Z             {
2026-06-21T11:53:56.0082838Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0082937Z               "line": 2301
2026-06-21T11:53:56.0083023Z             },
2026-06-21T11:53:56.0083105Z             {
2026-06-21T11:53:56.0083229Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:56.0083309Z               "line": 46
2026-06-21T11:53:56.0083389Z             },
2026-06-21T11:53:56.0083470Z             {
2026-06-21T11:53:56.0083583Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:56.0083663Z               "line": 200
2026-06-21T11:53:56.0083749Z             },
2026-06-21T11:53:56.0083830Z             {
2026-06-21T11:53:56.0083936Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0084030Z               "line": 132
2026-06-21T11:53:56.0084112Z             },
2026-06-21T11:53:56.0084194Z             {
2026-06-21T11:53:56.0084302Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0084388Z               "line": 137
2026-06-21T11:53:56.0084475Z             },
2026-06-21T11:53:56.0084550Z             {
2026-06-21T11:53:56.0084659Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0084742Z               "line": 183
2026-06-21T11:53:56.0084827Z             }
2026-06-21T11:53:56.0084908Z           ]
2026-06-21T11:53:56.0084988Z         },
2026-06-21T11:53:56.0085076Z         "int": {
2026-06-21T11:53:56.0085171Z           "complete": true,
2026-06-21T11:53:56.0085261Z           "evidence": [
2026-06-21T11:53:56.0085337Z             {
2026-06-21T11:53:56.0085476Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T11:53:56.0085576Z               "line": 27
2026-06-21T11:53:56.0085662Z             },
2026-06-21T11:53:56.0085748Z             {
2026-06-21T11:53:56.0085870Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T11:53:56.0085962Z               "line": 148
2026-06-21T11:53:56.0086040Z             },
2026-06-21T11:53:56.0086129Z             {
2026-06-21T11:53:56.0086251Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T11:53:56.0086337Z               "line": 200
2026-06-21T11:53:56.0086415Z             }
2026-06-21T11:53:56.0086491Z           ]
2026-06-21T11:53:56.0086570Z         },
2026-06-21T11:53:56.0086652Z         "unit": {
2026-06-21T11:53:56.0086739Z           "complete": true,
2026-06-21T11:53:56.0086824Z           "evidence": [
2026-06-21T11:53:56.0086904Z             {
2026-06-21T11:53:56.0087020Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:56.0087105Z               "line": 366
2026-06-21T11:53:56.0087258Z             },
2026-06-21T11:53:56.0087339Z             {
2026-06-21T11:53:56.0087515Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:56.0087596Z               "line": 398
2026-06-21T11:53:56.0087678Z             },
2026-06-21T11:53:56.0087763Z             {
2026-06-21T11:53:56.0087863Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T11:53:56.0087950Z               "line": 419
2026-06-21T11:53:56.0088031Z             },
2026-06-21T11:53:56.0088115Z             {
2026-06-21T11:53:56.0088240Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0088327Z               "line": 628
2026-06-21T11:53:56.0088411Z             },
2026-06-21T11:53:56.0088492Z             {
2026-06-21T11:53:56.0088611Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T11:53:56.0088700Z               "line": 289
2026-06-21T11:53:56.0088780Z             },
2026-06-21T11:53:56.0088865Z             {
2026-06-21T11:53:56.0089062Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T11:53:56.0089157Z               "line": 230
2026-06-21T11:53:56.0089247Z             },
2026-06-21T11:53:56.0089329Z             {
2026-06-21T11:53:56.0089433Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0089519Z               "line": 526
2026-06-21T11:53:56.0089611Z             },
2026-06-21T11:53:56.0089687Z             {
2026-06-21T11:53:56.0089805Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0089887Z               "line": 556
2026-06-21T11:53:56.0089972Z             }
2026-06-21T11:53:56.0090058Z           ]
2026-06-21T11:53:56.0090139Z         }
2026-06-21T11:53:56.0090221Z       }
2026-06-21T11:53:56.0090301Z     },
2026-06-21T11:53:56.0090382Z     {
2026-06-21T11:53:56.0090502Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T11:53:56.0092215Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T11:53:56.0092338Z       "requiredStages": [
2026-06-21T11:53:56.0092425Z         "doc",
2026-06-21T11:53:56.0092501Z         "impl",
2026-06-21T11:53:56.0092577Z         "unit"
2026-06-21T11:53:56.0092658Z       ],
2026-06-21T11:53:56.0092749Z       "stages": {
2026-06-21T11:53:56.0092825Z         "doc": {
2026-06-21T11:53:56.0092916Z           "complete": true,
2026-06-21T11:53:56.0093001Z           "evidence": [
2026-06-21T11:53:56.0093089Z             {
2026-06-21T11:53:56.0093192Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0093287Z               "line": 314
2026-06-21T11:53:56.0093374Z             }
2026-06-21T11:53:56.0093455Z           ]
2026-06-21T11:53:56.0093549Z         },
2026-06-21T11:53:56.0093631Z         "impl": {
2026-06-21T11:53:56.0093723Z           "complete": true,
2026-06-21T11:53:56.0093808Z           "evidence": [
2026-06-21T11:53:56.0093892Z             {
2026-06-21T11:53:56.0094030Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T11:53:56.0094115Z               "line": 33
2026-06-21T11:53:56.0094200Z             },
2026-06-21T11:53:56.0094270Z             {
2026-06-21T11:53:56.0094405Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T11:53:56.0094486Z               "line": 39
2026-06-21T11:53:56.0094571Z             }
2026-06-21T11:53:56.0094652Z           ]
2026-06-21T11:53:56.0094739Z         },
2026-06-21T11:53:56.0094825Z         "int": {
2026-06-21T11:53:56.0094905Z           "complete": false,
2026-06-21T11:53:56.0094997Z           "evidence": []
2026-06-21T11:53:56.0095191Z         },
2026-06-21T11:53:56.0095273Z         "unit": {
2026-06-21T11:53:56.0095449Z           "complete": true,
2026-06-21T11:53:56.0095535Z           "evidence": [
2026-06-21T11:53:56.0095621Z             {
2026-06-21T11:53:56.0095749Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T11:53:56.0095826Z               "line": 95
2026-06-21T11:53:56.0095902Z             }
2026-06-21T11:53:56.0095984Z           ]
2026-06-21T11:53:56.0096069Z         }
2026-06-21T11:53:56.0096141Z       }
2026-06-21T11:53:56.0096222Z     },
2026-06-21T11:53:56.0096299Z     {
2026-06-21T11:53:56.0096402Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T11:53:56.0098805Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T11:53:56.0098920Z       "requiredStages": [
2026-06-21T11:53:56.0099094Z         "impl",
2026-06-21T11:53:56.0099180Z         "unit"
2026-06-21T11:53:56.0099261Z       ],
2026-06-21T11:53:56.0099350Z       "stages": {
2026-06-21T11:53:56.0099425Z         "doc": {
2026-06-21T11:53:56.0099512Z           "complete": false,
2026-06-21T11:53:56.0099604Z           "evidence": []
2026-06-21T11:53:56.0099683Z         },
2026-06-21T11:53:56.0099769Z         "impl": {
2026-06-21T11:53:56.0099865Z           "complete": true,
2026-06-21T11:53:56.0099951Z           "evidence": [
2026-06-21T11:53:56.0100036Z             {
2026-06-21T11:53:56.0100171Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0100252Z               "line": 488
2026-06-21T11:53:56.0100331Z             }
2026-06-21T11:53:56.0100414Z           ]
2026-06-21T11:53:56.0100495Z         },
2026-06-21T11:53:56.0100581Z         "int": {
2026-06-21T11:53:56.0100660Z           "complete": false,
2026-06-21T11:53:56.0100743Z           "evidence": []
2026-06-21T11:53:56.0100829Z         },
2026-06-21T11:53:56.0100914Z         "unit": {
2026-06-21T11:53:56.0101009Z           "complete": true,
2026-06-21T11:53:56.0101096Z           "evidence": [
2026-06-21T11:53:56.0101181Z             {
2026-06-21T11:53:56.0101309Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0101401Z               "line": 1466
2026-06-21T11:53:56.0101486Z             }
2026-06-21T11:53:56.0101581Z           ]
2026-06-21T11:53:56.0101668Z         }
2026-06-21T11:53:56.0101750Z       }
2026-06-21T11:53:56.0101829Z     },
2026-06-21T11:53:56.0101909Z     {
2026-06-21T11:53:56.0102014Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T11:53:56.0104186Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T11:53:56.0104386Z       "requiredStages": [
2026-06-21T11:53:56.0104472Z         "unit"
2026-06-21T11:53:56.0104552Z       ],
2026-06-21T11:53:56.0104731Z       "stages": {
2026-06-21T11:53:56.0104821Z         "doc": {
2026-06-21T11:53:56.0104907Z           "complete": false,
2026-06-21T11:53:56.0105004Z           "evidence": []
2026-06-21T11:53:56.0105084Z         },
2026-06-21T11:53:56.0105169Z         "impl": {
2026-06-21T11:53:56.0105261Z           "complete": true,
2026-06-21T11:53:56.0105352Z           "evidence": [
2026-06-21T11:53:56.0105437Z             {
2026-06-21T11:53:56.0105542Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0105637Z               "line": 3520
2026-06-21T11:53:56.0105709Z             },
2026-06-21T11:53:56.0105785Z             {
2026-06-21T11:53:56.0105886Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0105976Z               "line": 3572
2026-06-21T11:53:56.0106061Z             },
2026-06-21T11:53:56.0106142Z             {
2026-06-21T11:53:56.0106253Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0106338Z               "line": 3617
2026-06-21T11:53:56.0106428Z             },
2026-06-21T11:53:56.0106511Z             {
2026-06-21T11:53:56.0106624Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0106705Z               "line": 92
2026-06-21T11:53:56.0106787Z             },
2026-06-21T11:53:56.0106873Z             {
2026-06-21T11:53:56.0106977Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0107063Z               "line": 148
2026-06-21T11:53:56.0107145Z             },
2026-06-21T11:53:56.0107226Z             {
2026-06-21T11:53:56.0107334Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0107414Z               "line": 192
2026-06-21T11:53:56.0107496Z             },
2026-06-21T11:53:56.0107578Z             {
2026-06-21T11:53:56.0107686Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0107777Z               "line": 200
2026-06-21T11:53:56.0107873Z             },
2026-06-21T11:53:56.0107958Z             {
2026-06-21T11:53:56.0108063Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0108150Z               "line": 211
2026-06-21T11:53:56.0108240Z             },
2026-06-21T11:53:56.0108325Z             {
2026-06-21T11:53:56.0108426Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0108507Z               "line": 265
2026-06-21T11:53:56.0108588Z             },
2026-06-21T11:53:56.0108668Z             {
2026-06-21T11:53:56.0108779Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0108860Z               "line": 279
2026-06-21T11:53:56.0109017Z             }
2026-06-21T11:53:56.0109103Z           ]
2026-06-21T11:53:56.0109175Z         },
2026-06-21T11:53:56.0109260Z         "int": {
2026-06-21T11:53:56.0109346Z           "complete": false,
2026-06-21T11:53:56.0109438Z           "evidence": []
2026-06-21T11:53:56.0109517Z         },
2026-06-21T11:53:56.0109607Z         "unit": {
2026-06-21T11:53:56.0109702Z           "complete": true,
2026-06-21T11:53:56.0109783Z           "evidence": [
2026-06-21T11:53:56.0109872Z             {
2026-06-21T11:53:56.0109981Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0110067Z               "line": 419
2026-06-21T11:53:56.0110150Z             },
2026-06-21T11:53:56.0110224Z             {
2026-06-21T11:53:56.0110320Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0110407Z               "line": 470
2026-06-21T11:53:56.0110487Z             },
2026-06-21T11:53:56.0110572Z             {
2026-06-21T11:53:56.0110683Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0110759Z               "line": 499
2026-06-21T11:53:56.0110849Z             },
2026-06-21T11:53:56.0110930Z             {
2026-06-21T11:53:56.0111031Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0111116Z               "line": 526
2026-06-21T11:53:56.0111197Z             }
2026-06-21T11:53:56.0111370Z           ]
2026-06-21T11:53:56.0111455Z         }
2026-06-21T11:53:56.0111540Z       }
2026-06-21T11:53:56.0111727Z     },
2026-06-21T11:53:56.0111808Z     {
2026-06-21T11:53:56.0111923Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T11:53:56.0112098Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T11:53:56.0112204Z       "requiredStages": [
2026-06-21T11:53:56.0112286Z         "impl",
2026-06-21T11:53:56.0112371Z         "unit"
2026-06-21T11:53:56.0112455Z       ],
2026-06-21T11:53:56.0112540Z       "stages": {
2026-06-21T11:53:56.0112627Z         "doc": {
2026-06-21T11:53:56.0112711Z           "complete": false,
2026-06-21T11:53:56.0112791Z           "evidence": []
2026-06-21T11:53:56.0112877Z         },
2026-06-21T11:53:56.0112959Z         "impl": {
2026-06-21T11:53:56.0113054Z           "complete": true,
2026-06-21T11:53:56.0113139Z           "evidence": [
2026-06-21T11:53:56.0113226Z             {
2026-06-21T11:53:56.0113350Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0113454Z               "line": 62
2026-06-21T11:53:56.0113531Z             },
2026-06-21T11:53:56.0113617Z             {
2026-06-21T11:53:56.0113740Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0113821Z               "line": 71
2026-06-21T11:53:56.0113908Z             },
2026-06-21T11:53:56.0113993Z             {
2026-06-21T11:53:56.0114117Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0114199Z               "line": 80
2026-06-21T11:53:56.0114284Z             },
2026-06-21T11:53:56.0114365Z             {
2026-06-21T11:53:56.0114475Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0114562Z               "line": 88
2026-06-21T11:53:56.0114645Z             },
2026-06-21T11:53:56.0114727Z             {
2026-06-21T11:53:56.0114843Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0114928Z               "line": 33
2026-06-21T11:53:56.0115017Z             },
2026-06-21T11:53:56.0115093Z             {
2026-06-21T11:53:56.0115203Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0115291Z               "line": 65
2026-06-21T11:53:56.0115377Z             },
2026-06-21T11:53:56.0115458Z             {
2026-06-21T11:53:56.0115569Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0115658Z               "line": 74
2026-06-21T11:53:56.0115744Z             },
2026-06-21T11:53:56.0115822Z             {
2026-06-21T11:53:56.0115917Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0116011Z               "line": 93
2026-06-21T11:53:56.0116097Z             },
2026-06-21T11:53:56.0116178Z             {
2026-06-21T11:53:56.0116288Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0116368Z               "line": 102
2026-06-21T11:53:56.0116451Z             },
2026-06-21T11:53:56.0116531Z             {
2026-06-21T11:53:56.0116650Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0116741Z               "line": 111
2026-06-21T11:53:56.0116827Z             },
2026-06-21T11:53:56.0116912Z             {
2026-06-21T11:53:56.0117017Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0117100Z               "line": 122
2026-06-21T11:53:56.0117184Z             },
2026-06-21T11:53:56.0117270Z             {
2026-06-21T11:53:56.0117376Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0117457Z               "line": 140
2026-06-21T11:53:56.0117541Z             },
2026-06-21T11:53:56.0117628Z             {
2026-06-21T11:53:56.0117734Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0117818Z               "line": 149
2026-06-21T11:53:56.0117904Z             },
2026-06-21T11:53:56.0117984Z             {
2026-06-21T11:53:56.0118085Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0118171Z               "line": 158
2026-06-21T11:53:56.0118323Z             },
2026-06-21T11:53:56.0118409Z             {
2026-06-21T11:53:56.0118518Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0118677Z               "line": 169
2026-06-21T11:53:56.0118762Z             },
2026-06-21T11:53:56.0118847Z             {
2026-06-21T11:53:56.0119043Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0119115Z               "line": 177
2026-06-21T11:53:56.0119200Z             },
2026-06-21T11:53:56.0119282Z             {
2026-06-21T11:53:56.0119392Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0119477Z               "line": 186
2026-06-21T11:53:56.0119557Z             },
2026-06-21T11:53:56.0119640Z             {
2026-06-21T11:53:56.0119749Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0119839Z               "line": 195
2026-06-21T11:53:56.0119916Z             },
2026-06-21T11:53:56.0120002Z             {
2026-06-21T11:53:56.0120115Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0120201Z               "line": 204
2026-06-21T11:53:56.0120296Z             },
2026-06-21T11:53:56.0120362Z             {
2026-06-21T11:53:56.0120465Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0120546Z               "line": 216
2026-06-21T11:53:56.0120637Z             },
2026-06-21T11:53:56.0120719Z             {
2026-06-21T11:53:56.0120832Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0120914Z               "line": 223
2026-06-21T11:53:56.0120995Z             },
2026-06-21T11:53:56.0121071Z             {
2026-06-21T11:53:56.0121180Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0121262Z               "line": 232
2026-06-21T11:53:56.0121352Z             },
2026-06-21T11:53:56.0121438Z             {
2026-06-21T11:53:56.0121544Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0121624Z               "line": 239
2026-06-21T11:53:56.0121719Z             },
2026-06-21T11:53:56.0121805Z             {
2026-06-21T11:53:56.0121911Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0122000Z               "line": 306
2026-06-21T11:53:56.0122086Z             },
2026-06-21T11:53:56.0122168Z             {
2026-06-21T11:53:56.0122268Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0122368Z               "line": 318
2026-06-21T11:53:56.0122454Z             },
2026-06-21T11:53:56.0122531Z             {
2026-06-21T11:53:56.0122635Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0122721Z               "line": 405
2026-06-21T11:53:56.0122807Z             }
2026-06-21T11:53:56.0122879Z           ]
2026-06-21T11:53:56.0122964Z         },
2026-06-21T11:53:56.0123053Z         "int": {
2026-06-21T11:53:56.0123134Z           "complete": false,
2026-06-21T11:53:56.0123220Z           "evidence": []
2026-06-21T11:53:56.0123304Z         },
2026-06-21T11:53:56.0123389Z         "unit": {
2026-06-21T11:53:56.0123490Z           "complete": true,
2026-06-21T11:53:56.0123581Z           "evidence": [
2026-06-21T11:53:56.0123675Z             {
2026-06-21T11:53:56.0123771Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0123858Z               "line": 487
2026-06-21T11:53:56.0123943Z             },
2026-06-21T11:53:56.0124023Z             {
2026-06-21T11:53:56.0124125Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0124219Z               "line": 528
2026-06-21T11:53:56.0124295Z             },
2026-06-21T11:53:56.0124377Z             {
2026-06-21T11:53:56.0124482Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0124562Z               "line": 541
2026-06-21T11:53:56.0124643Z             },
2026-06-21T11:53:56.0124715Z             {
2026-06-21T11:53:56.0124830Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0124915Z               "line": 627
2026-06-21T11:53:56.0124992Z             }
2026-06-21T11:53:56.0125169Z           ]
2026-06-21T11:53:56.0125254Z         }
2026-06-21T11:53:56.0125335Z       }
2026-06-21T11:53:56.0125483Z     },
2026-06-21T11:53:56.0125563Z     {
2026-06-21T11:53:56.0125677Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T11:53:56.0125870Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T11:53:56.0125970Z       "requiredStages": [
2026-06-21T11:53:56.0126052Z         "impl",
2026-06-21T11:53:56.0126139Z         "unit"
2026-06-21T11:53:56.0126223Z       ],
2026-06-21T11:53:56.0126314Z       "stages": {
2026-06-21T11:53:56.0126391Z         "doc": {
2026-06-21T11:53:56.0126486Z           "complete": false,
2026-06-21T11:53:56.0126581Z           "evidence": []
2026-06-21T11:53:56.0126662Z         },
2026-06-21T11:53:56.0126748Z         "impl": {
2026-06-21T11:53:56.0126829Z           "complete": true,
2026-06-21T11:53:56.0126924Z           "evidence": [
2026-06-21T11:53:56.0127001Z             {
2026-06-21T11:53:56.0127105Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0127205Z               "line": 175
2026-06-21T11:53:56.0127297Z             },
2026-06-21T11:53:56.0127378Z             {
2026-06-21T11:53:56.0127492Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0127587Z               "line": 171
2026-06-21T11:53:56.0127665Z             }
2026-06-21T11:53:56.0127749Z           ]
2026-06-21T11:53:56.0127839Z         },
2026-06-21T11:53:56.0127927Z         "int": {
2026-06-21T11:53:56.0128022Z           "complete": false,
2026-06-21T11:53:56.0128106Z           "evidence": []
2026-06-21T11:53:56.0128193Z         },
2026-06-21T11:53:56.0128275Z         "unit": {
2026-06-21T11:53:56.0128355Z           "complete": true,
2026-06-21T11:53:56.0128440Z           "evidence": [
2026-06-21T11:53:56.0128515Z             {
2026-06-21T11:53:56.0128631Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0128707Z               "line": 297
2026-06-21T11:53:56.0128787Z             },
2026-06-21T11:53:56.0128868Z             {
2026-06-21T11:53:56.0129074Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0129173Z               "line": 836
2026-06-21T11:53:56.0129251Z             },
2026-06-21T11:53:56.0129336Z             {
2026-06-21T11:53:56.0129450Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0129527Z               "line": 849
2026-06-21T11:53:56.0129608Z             }
2026-06-21T11:53:56.0129689Z           ]
2026-06-21T11:53:56.0129784Z         }
2026-06-21T11:53:56.0129856Z       }
2026-06-21T11:53:56.0129937Z     },
2026-06-21T11:53:56.0130013Z     {
2026-06-21T11:53:56.0130132Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T11:53:56.0130257Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T11:53:56.0130347Z       "requiredStages": [
2026-06-21T11:53:56.0130437Z         "impl",
2026-06-21T11:53:56.0130515Z         "unit"
2026-06-21T11:53:56.0130600Z       ],
2026-06-21T11:53:56.0130685Z       "stages": {
2026-06-21T11:53:56.0130779Z         "doc": {
2026-06-21T11:53:56.0130879Z           "complete": false,
2026-06-21T11:53:56.0130964Z           "evidence": []
2026-06-21T11:53:56.0131044Z         },
2026-06-21T11:53:56.0131130Z         "impl": {
2026-06-21T11:53:56.0131231Z           "complete": true,
2026-06-21T11:53:56.0131312Z           "evidence": [
2026-06-21T11:53:56.0131387Z             {
2026-06-21T11:53:56.0131502Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0131584Z               "line": 116
2026-06-21T11:53:56.0131664Z             },
2026-06-21T11:53:56.0131750Z             {
2026-06-21T11:53:56.0131875Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0131964Z               "line": 507
2026-06-21T11:53:56.0132055Z             }
2026-06-21T11:53:56.0132137Z           ]
2026-06-21T11:53:56.0132213Z         },
2026-06-21T11:53:56.0132289Z         "int": {
2026-06-21T11:53:56.0132370Z           "complete": false,
2026-06-21T11:53:56.0132565Z           "evidence": []
2026-06-21T11:53:56.0132651Z         },
2026-06-21T11:53:56.0132733Z         "unit": {
2026-06-21T11:53:56.0132908Z           "complete": true,
2026-06-21T11:53:56.0132994Z           "evidence": [
2026-06-21T11:53:56.0133077Z             {
2026-06-21T11:53:56.0133185Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0133281Z               "line": 541
2026-06-21T11:53:56.0133353Z             }
2026-06-21T11:53:56.0133434Z           ]
2026-06-21T11:53:56.0133519Z         }
2026-06-21T11:53:56.0133604Z       }
2026-06-21T11:53:56.0133690Z     },
2026-06-21T11:53:56.0133771Z     {
2026-06-21T11:53:56.0133892Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T11:53:56.0134059Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T11:53:56.0134151Z       "requiredStages": [
2026-06-21T11:53:56.0134235Z         "impl",
2026-06-21T11:53:56.0134312Z         "unit"
2026-06-21T11:53:56.0134408Z       ],
2026-06-21T11:53:56.0134494Z       "stages": {
2026-06-21T11:53:56.0134574Z         "doc": {
2026-06-21T11:53:56.0134656Z           "complete": false,
2026-06-21T11:53:56.0134761Z           "evidence": []
2026-06-21T11:53:56.0134842Z         },
2026-06-21T11:53:56.0134922Z         "impl": {
2026-06-21T11:53:56.0135014Z           "complete": true,
2026-06-21T11:53:56.0135094Z           "evidence": [
2026-06-21T11:53:56.0135171Z             {
2026-06-21T11:53:56.0135285Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0135381Z               "line": 552
2026-06-21T11:53:56.0135460Z             },
2026-06-21T11:53:56.0135542Z             {
2026-06-21T11:53:56.0135653Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:56.0135738Z               "line": 28
2026-06-21T11:53:56.0135819Z             }
2026-06-21T11:53:56.0135900Z           ]
2026-06-21T11:53:56.0135987Z         },
2026-06-21T11:53:56.0136076Z         "int": {
2026-06-21T11:53:56.0136166Z           "complete": false,
2026-06-21T11:53:56.0136266Z           "evidence": []
2026-06-21T11:53:56.0136347Z         },
2026-06-21T11:53:56.0136445Z         "unit": {
2026-06-21T11:53:56.0136535Z           "complete": true,
2026-06-21T11:53:56.0136626Z           "evidence": [
2026-06-21T11:53:56.0136713Z             {
2026-06-21T11:53:56.0136826Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:56.0136912Z               "line": 229
2026-06-21T11:53:56.0136998Z             }
2026-06-21T11:53:56.0137079Z           ]
2026-06-21T11:53:56.0137160Z         }
2026-06-21T11:53:56.0137247Z       }
2026-06-21T11:53:56.0137332Z     },
2026-06-21T11:53:56.0137417Z     {
2026-06-21T11:53:56.0137533Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T11:53:56.0137660Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T11:53:56.0137760Z       "requiredStages": [],
2026-06-21T11:53:56.0137842Z       "stages": {
2026-06-21T11:53:56.0137929Z         "doc": {
2026-06-21T11:53:56.0138029Z           "complete": false,
2026-06-21T11:53:56.0138119Z           "evidence": []
2026-06-21T11:53:56.0138205Z         },
2026-06-21T11:53:56.0138295Z         "impl": {
2026-06-21T11:53:56.0138385Z           "complete": false,
2026-06-21T11:53:56.0138472Z           "evidence": []
2026-06-21T11:53:56.0138554Z         },
2026-06-21T11:53:56.0138642Z         "int": {
2026-06-21T11:53:56.0138729Z           "complete": false,
2026-06-21T11:53:56.0138807Z           "evidence": []
2026-06-21T11:53:56.0138892Z         },
2026-06-21T11:53:56.0139057Z         "unit": {
2026-06-21T11:53:56.0139147Z           "complete": false,
2026-06-21T11:53:56.0139229Z           "evidence": []
2026-06-21T11:53:56.0139314Z         }
2026-06-21T11:53:56.0139395Z       }
2026-06-21T11:53:56.0139481Z     },
2026-06-21T11:53:56.0139563Z     {
2026-06-21T11:53:56.0139681Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T11:53:56.0139821Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T11:53:56.0140039Z       "requiredStages": [
2026-06-21T11:53:56.0140121Z         "impl",
2026-06-21T11:53:56.0140206Z         "unit"
2026-06-21T11:53:56.0140387Z       ],
2026-06-21T11:53:56.0140474Z       "stages": {
2026-06-21T11:53:56.0140554Z         "doc": {
2026-06-21T11:53:56.0140640Z           "complete": false,
2026-06-21T11:53:56.0140736Z           "evidence": []
2026-06-21T11:53:56.0140808Z         },
2026-06-21T11:53:56.0140892Z         "impl": {
2026-06-21T11:53:56.0140983Z           "complete": true,
2026-06-21T11:53:56.0141065Z           "evidence": [
2026-06-21T11:53:56.0141150Z             {
2026-06-21T11:53:56.0141254Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T11:53:56.0141344Z               "line": 19
2026-06-21T11:53:56.0141421Z             },
2026-06-21T11:53:56.0141505Z             {
2026-06-21T11:53:56.0141618Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0141705Z               "line": 463
2026-06-21T11:53:56.0141791Z             },
2026-06-21T11:53:56.0141881Z             {
2026-06-21T11:53:56.0142000Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0142096Z               "line": 499
2026-06-21T11:53:56.0142177Z             },
2026-06-21T11:53:56.0142257Z             {
2026-06-21T11:53:56.0142373Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0142463Z               "line": 547
2026-06-21T11:53:56.0142548Z             },
2026-06-21T11:53:56.0142630Z             {
2026-06-21T11:53:56.0142749Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T11:53:56.0142835Z               "line": 15
2026-06-21T11:53:56.0142925Z             },
2026-06-21T11:53:56.0143008Z             {
2026-06-21T11:53:56.0143126Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T11:53:56.0143207Z               "line": 48
2026-06-21T11:53:56.0143288Z             },
2026-06-21T11:53:56.0143370Z             {
2026-06-21T11:53:56.0143473Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T11:53:56.0143559Z               "line": 119
2026-06-21T11:53:56.0143647Z             },
2026-06-21T11:53:56.0143736Z             {
2026-06-21T11:53:56.0143841Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0143932Z               "line": 3948
2026-06-21T11:53:56.0144018Z             }
2026-06-21T11:53:56.0144103Z           ]
2026-06-21T11:53:56.0144192Z         },
2026-06-21T11:53:56.0144274Z         "int": {
2026-06-21T11:53:56.0144368Z           "complete": false,
2026-06-21T11:53:56.0144448Z           "evidence": []
2026-06-21T11:53:56.0144538Z         },
2026-06-21T11:53:56.0144624Z         "unit": {
2026-06-21T11:53:56.0144711Z           "complete": true,
2026-06-21T11:53:56.0144796Z           "evidence": [
2026-06-21T11:53:56.0144877Z             {
2026-06-21T11:53:56.0144992Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0145077Z               "line": 765
2026-06-21T11:53:56.0145167Z             },
2026-06-21T11:53:56.0145254Z             {
2026-06-21T11:53:56.0145364Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T11:53:56.0145453Z               "line": 165
2026-06-21T11:53:56.0145545Z             },
2026-06-21T11:53:56.0145631Z             {
2026-06-21T11:53:56.0148244Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T11:53:56.0148364Z               "line": 175
2026-06-21T11:53:56.0148436Z             }
2026-06-21T11:53:56.0148517Z           ]
2026-06-21T11:53:56.0148603Z         }
2026-06-21T11:53:56.0148684Z       }
2026-06-21T11:53:56.0148770Z     },
2026-06-21T11:53:56.0148841Z     {
2026-06-21T11:53:56.0149037Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T11:53:56.0149955Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T11:53:56.0150198Z       "requiredStages": [
2026-06-21T11:53:56.0150289Z         "impl",
2026-06-21T11:53:56.0150362Z         "unit"
2026-06-21T11:53:56.0150537Z       ],
2026-06-21T11:53:56.0150628Z       "stages": {
2026-06-21T11:53:56.0150710Z         "doc": {
2026-06-21T11:53:56.0150809Z           "complete": false,
2026-06-21T11:53:56.0150890Z           "evidence": []
2026-06-21T11:53:56.0150972Z         },
2026-06-21T11:53:56.0151053Z         "impl": {
2026-06-21T11:53:56.0151138Z           "complete": true,
2026-06-21T11:53:56.0151233Z           "evidence": [
2026-06-21T11:53:56.0151316Z             {
2026-06-21T11:53:56.0151438Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0151529Z               "line": 192
2026-06-21T11:53:56.0151611Z             },
2026-06-21T11:53:56.0151692Z             {
2026-06-21T11:53:56.0151805Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0151899Z               "line": 279
2026-06-21T11:53:56.0151976Z             }
2026-06-21T11:53:56.0152056Z           ]
2026-06-21T11:53:56.0152136Z         },
2026-06-21T11:53:56.0152212Z         "int": {
2026-06-21T11:53:56.0152308Z           "complete": false,
2026-06-21T11:53:56.0152394Z           "evidence": []
2026-06-21T11:53:56.0152474Z         },
2026-06-21T11:53:56.0152556Z         "unit": {
2026-06-21T11:53:56.0152637Z           "complete": true,
2026-06-21T11:53:56.0152727Z           "evidence": [
2026-06-21T11:53:56.0152813Z             {
2026-06-21T11:53:56.0152924Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0153014Z               "line": 470
2026-06-21T11:53:56.0153099Z             },
2026-06-21T11:53:56.0153180Z             {
2026-06-21T11:53:56.0153281Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0153367Z               "line": 526
2026-06-21T11:53:56.0153452Z             }
2026-06-21T11:53:56.0153533Z           ]
2026-06-21T11:53:56.0153619Z         }
2026-06-21T11:53:56.0153700Z       }
2026-06-21T11:53:56.0153781Z     },
2026-06-21T11:53:56.0153868Z     {
2026-06-21T11:53:56.0153967Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T11:53:56.0157781Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T11:53:56.0157899Z       "requiredStages": [
2026-06-21T11:53:56.0157984Z         "impl",
2026-06-21T11:53:56.0158067Z         "unit",
2026-06-21T11:53:56.0158147Z         "int"
2026-06-21T11:53:56.0158232Z       ],
2026-06-21T11:53:56.0158328Z       "stages": {
2026-06-21T11:53:56.0158410Z         "doc": {
2026-06-21T11:53:56.0158500Z           "complete": false,
2026-06-21T11:53:56.0158590Z           "evidence": []
2026-06-21T11:53:56.0158672Z         },
2026-06-21T11:53:56.0158753Z         "impl": {
2026-06-21T11:53:56.0158839Z           "complete": true,
2026-06-21T11:53:56.0159101Z           "evidence": [
2026-06-21T11:53:56.0159173Z             {
2026-06-21T11:53:56.0159311Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0159511Z               "line": 116
2026-06-21T11:53:56.0159597Z             },
2026-06-21T11:53:56.0159679Z             {
2026-06-21T11:53:56.0159786Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.0159878Z               "line": 132
2026-06-21T11:53:56.0159960Z             },
2026-06-21T11:53:56.0160036Z             {
2026-06-21T11:53:56.0160148Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.0160224Z               "line": 434
2026-06-21T11:53:56.0160311Z             },
2026-06-21T11:53:56.0160388Z             {
2026-06-21T11:53:56.0160506Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0160601Z               "line": 139
2026-06-21T11:53:56.0160673Z             },
2026-06-21T11:53:56.0160754Z             {
2026-06-21T11:53:56.0160878Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0160960Z               "line": 326
2026-06-21T11:53:56.0161041Z             },
2026-06-21T11:53:56.0161125Z             {
2026-06-21T11:53:56.0161260Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0161350Z               "line": 555
2026-06-21T11:53:56.0161440Z             }
2026-06-21T11:53:56.0161517Z           ]
2026-06-21T11:53:56.0161604Z         },
2026-06-21T11:53:56.0161688Z         "int": {
2026-06-21T11:53:56.0161774Z           "complete": true,
2026-06-21T11:53:56.0161861Z           "evidence": [
2026-06-21T11:53:56.0161933Z             {
2026-06-21T11:53:56.0162074Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T11:53:56.0162161Z               "line": 32
2026-06-21T11:53:56.0162239Z             }
2026-06-21T11:53:56.0162313Z           ]
2026-06-21T11:53:56.0162398Z         },
2026-06-21T11:53:56.0162479Z         "unit": {
2026-06-21T11:53:56.0162575Z           "complete": true,
2026-06-21T11:53:56.0162658Z           "evidence": [
2026-06-21T11:53:56.0162730Z             {
2026-06-21T11:53:56.0162859Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0162945Z               "line": 625
2026-06-21T11:53:56.0163025Z             },
2026-06-21T11:53:56.0163106Z             {
2026-06-21T11:53:56.0163221Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0163302Z               "line": 646
2026-06-21T11:53:56.0163378Z             },
2026-06-21T11:53:56.0163459Z             {
2026-06-21T11:53:56.0163564Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0163649Z               "line": 662
2026-06-21T11:53:56.0163740Z             },
2026-06-21T11:53:56.0163823Z             {
2026-06-21T11:53:56.0163927Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0164007Z               "line": 680
2026-06-21T11:53:56.0164094Z             },
2026-06-21T11:53:56.0164175Z             {
2026-06-21T11:53:56.0164293Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0164379Z               "line": 704
2026-06-21T11:53:56.0164457Z             }
2026-06-21T11:53:56.0164546Z           ]
2026-06-21T11:53:56.0164623Z         }
2026-06-21T11:53:56.0164709Z       }
2026-06-21T11:53:56.0164786Z     },
2026-06-21T11:53:56.0164870Z     {
2026-06-21T11:53:56.0164976Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T11:53:56.0165129Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T11:53:56.0165223Z       "requiredStages": [
2026-06-21T11:53:56.0165298Z         "impl",
2026-06-21T11:53:56.0165374Z         "unit"
2026-06-21T11:53:56.0165460Z       ],
2026-06-21T11:53:56.0165539Z       "stages": {
2026-06-21T11:53:56.0165625Z         "doc": {
2026-06-21T11:53:56.0165716Z           "complete": false,
2026-06-21T11:53:56.0165798Z           "evidence": []
2026-06-21T11:53:56.0165883Z         },
2026-06-21T11:53:56.0165963Z         "impl": {
2026-06-21T11:53:56.0166155Z           "complete": true,
2026-06-21T11:53:56.0166245Z           "evidence": [
2026-06-21T11:53:56.0166398Z             {
2026-06-21T11:53:56.0166512Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:56.0166607Z               "line": 35
2026-06-21T11:53:56.0166690Z             }
2026-06-21T11:53:56.0166774Z           ]
2026-06-21T11:53:56.0166855Z         },
2026-06-21T11:53:56.0166941Z         "int": {
2026-06-21T11:53:56.0167037Z           "complete": false,
2026-06-21T11:53:56.0167123Z           "evidence": []
2026-06-21T11:53:56.0167208Z         },
2026-06-21T11:53:56.0167295Z         "unit": {
2026-06-21T11:53:56.0167381Z           "complete": true,
2026-06-21T11:53:56.0167470Z           "evidence": [
2026-06-21T11:53:56.0167556Z             {
2026-06-21T11:53:56.0167672Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T11:53:56.0167757Z               "line": 220
2026-06-21T11:53:56.0167841Z             }
2026-06-21T11:53:56.0167922Z           ]
2026-06-21T11:53:56.0168003Z         }
2026-06-21T11:53:56.0168088Z       }
2026-06-21T11:53:56.0168182Z     },
2026-06-21T11:53:56.0168264Z     {
2026-06-21T11:53:56.0168364Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T11:53:56.0171639Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T11:53:56.0171762Z       "requiredStages": [
2026-06-21T11:53:56.0171849Z         "impl",
2026-06-21T11:53:56.0171929Z         "unit",
2026-06-21T11:53:56.0172005Z         "int"
2026-06-21T11:53:56.0172082Z       ],
2026-06-21T11:53:56.0172164Z       "stages": {
2026-06-21T11:53:56.0172244Z         "doc": {
2026-06-21T11:53:56.0172339Z           "complete": false,
2026-06-21T11:53:56.0172417Z           "evidence": []
2026-06-21T11:53:56.0172498Z         },
2026-06-21T11:53:56.0172582Z         "impl": {
2026-06-21T11:53:56.0172673Z           "complete": true,
2026-06-21T11:53:56.0172760Z           "evidence": [
2026-06-21T11:53:56.0172836Z             {
2026-06-21T11:53:56.0172963Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0173054Z               "line": 202
2026-06-21T11:53:56.0173135Z             },
2026-06-21T11:53:56.0173214Z             {
2026-06-21T11:53:56.0173318Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T11:53:56.0173409Z               "line": 107
2026-06-21T11:53:56.0173491Z             },
2026-06-21T11:53:56.0173576Z             {
2026-06-21T11:53:56.0173681Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T11:53:56.0173767Z               "line": 138
2026-06-21T11:53:56.0173848Z             },
2026-06-21T11:53:56.0173928Z             {
2026-06-21T11:53:56.0174044Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0174129Z               "line": 209
2026-06-21T11:53:56.0174214Z             },
2026-06-21T11:53:56.0174291Z             {
2026-06-21T11:53:56.0174411Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0174620Z               "line": 246
2026-06-21T11:53:56.0174692Z             },
2026-06-21T11:53:56.0174777Z             {
2026-06-21T11:53:56.0174974Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0175064Z               "line": 379
2026-06-21T11:53:56.0175149Z             }
2026-06-21T11:53:56.0175230Z           ]
2026-06-21T11:53:56.0175317Z         },
2026-06-21T11:53:56.0175388Z         "int": {
2026-06-21T11:53:56.0175483Z           "complete": true,
2026-06-21T11:53:56.0175555Z           "evidence": [
2026-06-21T11:53:56.0175632Z             {
2026-06-21T11:53:56.0175768Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T11:53:56.0175854Z               "line": 17
2026-06-21T11:53:56.0175935Z             }
2026-06-21T11:53:56.0176011Z           ]
2026-06-21T11:53:56.0176099Z         },
2026-06-21T11:53:56.0176180Z         "unit": {
2026-06-21T11:53:56.0176276Z           "complete": true,
2026-06-21T11:53:56.0176363Z           "evidence": [
2026-06-21T11:53:56.0176452Z             {
2026-06-21T11:53:56.0176572Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:56.0176663Z               "line": 982
2026-06-21T11:53:56.0176748Z             }
2026-06-21T11:53:56.0176829Z           ]
2026-06-21T11:53:56.0176916Z         }
2026-06-21T11:53:56.0176996Z       }
2026-06-21T11:53:56.0177072Z     },
2026-06-21T11:53:56.0177158Z     {
2026-06-21T11:53:56.0177259Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T11:53:56.0177521Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T11:53:56.0177607Z       "requiredStages": [
2026-06-21T11:53:56.0177697Z         "impl",
2026-06-21T11:53:56.0177778Z         "unit"
2026-06-21T11:53:56.0177865Z       ],
2026-06-21T11:53:56.0177950Z       "stages": {
2026-06-21T11:53:56.0178035Z         "doc": {
2026-06-21T11:53:56.0178131Z           "complete": false,
2026-06-21T11:53:56.0178218Z           "evidence": []
2026-06-21T11:53:56.0178298Z         },
2026-06-21T11:53:56.0178378Z         "impl": {
2026-06-21T11:53:56.0178463Z           "complete": true,
2026-06-21T11:53:56.0178545Z           "evidence": [
2026-06-21T11:53:56.0178624Z             {
2026-06-21T11:53:56.0178747Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.0178838Z               "line": 405
2026-06-21T11:53:56.0178920Z             },
2026-06-21T11:53:56.0179100Z             {
2026-06-21T11:53:56.0179215Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0179301Z               "line": 409
2026-06-21T11:53:56.0179372Z             },
2026-06-21T11:53:56.0179458Z             {
2026-06-21T11:53:56.0179563Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.0179649Z               "line": 156
2026-06-21T11:53:56.0179729Z             }
2026-06-21T11:53:56.0179807Z           ]
2026-06-21T11:53:56.0179892Z         },
2026-06-21T11:53:56.0179973Z         "int": {
2026-06-21T11:53:56.0180068Z           "complete": false,
2026-06-21T11:53:56.0180155Z           "evidence": []
2026-06-21T11:53:56.0180240Z         },
2026-06-21T11:53:56.0180326Z         "unit": {
2026-06-21T11:53:56.0180412Z           "complete": true,
2026-06-21T11:53:56.0180507Z           "evidence": [
2026-06-21T11:53:56.0180583Z             {
2026-06-21T11:53:56.0180703Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0180784Z               "line": 865
2026-06-21T11:53:56.0180864Z             },
2026-06-21T11:53:56.0180946Z             {
2026-06-21T11:53:56.0181061Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0181142Z               "line": 879
2026-06-21T11:53:56.0181226Z             },
2026-06-21T11:53:56.0181311Z             {
2026-06-21T11:53:56.0181412Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0181494Z               "line": 898
2026-06-21T11:53:56.0181579Z             },
2026-06-21T11:53:56.0181660Z             {
2026-06-21T11:53:56.0181879Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0181969Z               "line": 915
2026-06-21T11:53:56.0182137Z             },
2026-06-21T11:53:56.0182222Z             {
2026-06-21T11:53:56.0182347Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T11:53:56.0182433Z               "line": 441
2026-06-21T11:53:56.0182504Z             }
2026-06-21T11:53:56.0182589Z           ]
2026-06-21T11:53:56.0182672Z         }
2026-06-21T11:53:56.0182748Z       }
2026-06-21T11:53:56.0182828Z     },
2026-06-21T11:53:56.0182909Z     {
2026-06-21T11:53:56.0183024Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T11:53:56.0193021Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T11:53:56.0193178Z       "requiredStages": [
2026-06-21T11:53:56.0193265Z         "doc",
2026-06-21T11:53:56.0193350Z         "impl",
2026-06-21T11:53:56.0193431Z         "unit",
2026-06-21T11:53:56.0193622Z         "int"
2026-06-21T11:53:56.0193707Z       ],
2026-06-21T11:53:56.0193793Z       "stages": {
2026-06-21T11:53:56.0193971Z         "doc": {
2026-06-21T11:53:56.0194064Z           "complete": true,
2026-06-21T11:53:56.0194149Z           "evidence": [
2026-06-21T11:53:56.0194236Z             {
2026-06-21T11:53:56.0194334Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0194415Z               "line": 420
2026-06-21T11:53:56.0194496Z             },
2026-06-21T11:53:56.0194582Z             {
2026-06-21T11:53:56.0194691Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0194781Z               "line": 402
2026-06-21T11:53:56.0194868Z             }
2026-06-21T11:53:56.0194949Z           ]
2026-06-21T11:53:56.0195025Z         },
2026-06-21T11:53:56.0195110Z         "impl": {
2026-06-21T11:53:56.0195207Z           "complete": true,
2026-06-21T11:53:56.0195297Z           "evidence": [
2026-06-21T11:53:56.0195377Z             {
2026-06-21T11:53:56.0195498Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0195588Z               "line": 797
2026-06-21T11:53:56.0195673Z             },
2026-06-21T11:53:56.0195764Z             {
2026-06-21T11:53:56.0195874Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0195955Z               "line": 822
2026-06-21T11:53:56.0196036Z             },
2026-06-21T11:53:56.0196127Z             {
2026-06-21T11:53:56.0196231Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0196331Z               "line": 839
2026-06-21T11:53:56.0196414Z             },
2026-06-21T11:53:56.0196495Z             {
2026-06-21T11:53:56.0196613Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0196699Z               "line": 854
2026-06-21T11:53:56.0196791Z             },
2026-06-21T11:53:56.0196875Z             {
2026-06-21T11:53:56.0197002Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0197093Z               "line": 874
2026-06-21T11:53:56.0197188Z             },
2026-06-21T11:53:56.0197267Z             {
2026-06-21T11:53:56.0197368Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0197454Z               "line": 964
2026-06-21T11:53:56.0197540Z             },
2026-06-21T11:53:56.0197630Z             {
2026-06-21T11:53:56.0197736Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0197821Z               "line": 1016
2026-06-21T11:53:56.0197906Z             },
2026-06-21T11:53:56.0197977Z             {
2026-06-21T11:53:56.0198088Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0198179Z               "line": 1075
2026-06-21T11:53:56.0198264Z             },
2026-06-21T11:53:56.0198350Z             {
2026-06-21T11:53:56.0198474Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:56.0198559Z               "line": 527
2026-06-21T11:53:56.0198641Z             }
2026-06-21T11:53:56.0198723Z           ]
2026-06-21T11:53:56.0198807Z         },
2026-06-21T11:53:56.0198903Z         "int": {
2026-06-21T11:53:56.0199075Z           "complete": true,
2026-06-21T11:53:56.0199175Z           "evidence": [
2026-06-21T11:53:56.0199266Z             {
2026-06-21T11:53:56.0199385Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T11:53:56.0199479Z               "line": 35
2026-06-21T11:53:56.0199559Z             },
2026-06-21T11:53:56.0199646Z             {
2026-06-21T11:53:56.0199763Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T11:53:56.0199858Z               "line": 569
2026-06-21T11:53:56.0199944Z             },
2026-06-21T11:53:56.0200026Z             {
2026-06-21T11:53:56.0200149Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T11:53:56.0200235Z               "line": 590
2026-06-21T11:53:56.0200312Z             }
2026-06-21T11:53:56.0200393Z           ]
2026-06-21T11:53:56.0200482Z         },
2026-06-21T11:53:56.0200564Z         "unit": {
2026-06-21T11:53:56.0200659Z           "complete": true,
2026-06-21T11:53:56.0200864Z           "evidence": [
2026-06-21T11:53:56.0200942Z             {
2026-06-21T11:53:56.0201069Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0201257Z               "line": 1202
2026-06-21T11:53:56.0201336Z             },
2026-06-21T11:53:56.0201417Z             {
2026-06-21T11:53:56.0201523Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0201618Z               "line": 1246
2026-06-21T11:53:56.0201703Z             },
2026-06-21T11:53:56.0201780Z             {
2026-06-21T11:53:56.0201886Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0201970Z               "line": 1260
2026-06-21T11:53:56.0202056Z             },
2026-06-21T11:53:56.0202133Z             {
2026-06-21T11:53:56.0202248Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0202327Z               "line": 1278
2026-06-21T11:53:56.0202417Z             },
2026-06-21T11:53:56.0202498Z             {
2026-06-21T11:53:56.0202619Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0202708Z               "line": 1302
2026-06-21T11:53:56.0202799Z             },
2026-06-21T11:53:56.0202881Z             {
2026-06-21T11:53:56.0202995Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0203075Z               "line": 1529
2026-06-21T11:53:56.0203163Z             }
2026-06-21T11:53:56.0203248Z           ]
2026-06-21T11:53:56.0203328Z         }
2026-06-21T11:53:56.0203409Z       }
2026-06-21T11:53:56.0203491Z     },
2026-06-21T11:53:56.0203577Z     {
2026-06-21T11:53:56.0203691Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T11:53:56.0205848Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T11:53:56.0205961Z       "requiredStages": [
2026-06-21T11:53:56.0206043Z         "unit",
2026-06-21T11:53:56.0206138Z         "int"
2026-06-21T11:53:56.0206224Z       ],
2026-06-21T11:53:56.0206310Z       "stages": {
2026-06-21T11:53:56.0206396Z         "doc": {
2026-06-21T11:53:56.0206496Z           "complete": true,
2026-06-21T11:53:56.0206581Z           "evidence": [
2026-06-21T11:53:56.0206673Z             {
2026-06-21T11:53:56.0206782Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0206877Z               "line": 381
2026-06-21T11:53:56.0206969Z             }
2026-06-21T11:53:56.0207055Z           ]
2026-06-21T11:53:56.0207144Z         },
2026-06-21T11:53:56.0207220Z         "impl": {
2026-06-21T11:53:56.0207327Z           "complete": true,
2026-06-21T11:53:56.0207421Z           "evidence": [
2026-06-21T11:53:56.0207506Z             {
2026-06-21T11:53:56.0207630Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0207724Z               "line": 143
2026-06-21T11:53:56.0207804Z             }
2026-06-21T11:53:56.0207889Z           ]
2026-06-21T11:53:56.0207975Z         },
2026-06-21T11:53:56.0208062Z         "int": {
2026-06-21T11:53:56.0208146Z           "complete": true,
2026-06-21T11:53:56.0208227Z           "evidence": [
2026-06-21T11:53:56.0208301Z             {
2026-06-21T11:53:56.0208429Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0208504Z               "line": 1042
2026-06-21T11:53:56.0208591Z             }
2026-06-21T11:53:56.0208677Z           ]
2026-06-21T11:53:56.0208758Z         },
2026-06-21T11:53:56.0208930Z         "unit": {
2026-06-21T11:53:56.0209110Z           "complete": true,
2026-06-21T11:53:56.0209196Z           "evidence": [
2026-06-21T11:53:56.0209372Z             {
2026-06-21T11:53:56.0209492Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0209588Z               "line": 2488
2026-06-21T11:53:56.0209672Z             }
2026-06-21T11:53:56.0209759Z           ]
2026-06-21T11:53:56.0209841Z         }
2026-06-21T11:53:56.0209922Z       }
2026-06-21T11:53:56.0210006Z     },
2026-06-21T11:53:56.0210087Z     {
2026-06-21T11:53:56.0210263Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-21T11:53:56.0215563Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-21T11:53:56.0215712Z       "requiredStages": [
2026-06-21T11:53:56.0215802Z         "impl",
2026-06-21T11:53:56.0215882Z         "unit"
2026-06-21T11:53:56.0215974Z       ],
2026-06-21T11:53:56.0216060Z       "stages": {
2026-06-21T11:53:56.0216150Z         "doc": {
2026-06-21T11:53:56.0216245Z           "complete": false,
2026-06-21T11:53:56.0216342Z           "evidence": []
2026-06-21T11:53:56.0216427Z         },
2026-06-21T11:53:56.0216512Z         "impl": {
2026-06-21T11:53:56.0216613Z           "complete": true,
2026-06-21T11:53:56.0216708Z           "evidence": [
2026-06-21T11:53:56.0216803Z             {
2026-06-21T11:53:56.0216919Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0217008Z               "line": 365
2026-06-21T11:53:56.0217094Z             },
2026-06-21T11:53:56.0217175Z             {
2026-06-21T11:53:56.0217295Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0217375Z               "line": 821
2026-06-21T11:53:56.0217461Z             }
2026-06-21T11:53:56.0217544Z           ]
2026-06-21T11:53:56.0217638Z         },
2026-06-21T11:53:56.0217723Z         "int": {
2026-06-21T11:53:56.0217815Z           "complete": false,
2026-06-21T11:53:56.0217915Z           "evidence": []
2026-06-21T11:53:56.0217995Z         },
2026-06-21T11:53:56.0218085Z         "unit": {
2026-06-21T11:53:56.0218171Z           "complete": true,
2026-06-21T11:53:56.0218261Z           "evidence": [
2026-06-21T11:53:56.0218345Z             {
2026-06-21T11:53:56.0218454Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0218651Z               "line": 2703
2026-06-21T11:53:56.0218730Z             },
2026-06-21T11:53:56.0218894Z             {
2026-06-21T11:53:56.0219083Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0219175Z               "line": 2772
2026-06-21T11:53:56.0219270Z             }
2026-06-21T11:53:56.0219346Z           ]
2026-06-21T11:53:56.0219437Z         }
2026-06-21T11:53:56.0219519Z       }
2026-06-21T11:53:56.0219598Z     },
2026-06-21T11:53:56.0219679Z     {
2026-06-21T11:53:56.0219786Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T11:53:56.0220590Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T11:53:56.0220694Z       "requiredStages": [
2026-06-21T11:53:56.0220790Z         "doc",
2026-06-21T11:53:56.0220888Z         "impl",
2026-06-21T11:53:56.0220978Z         "unit"
2026-06-21T11:53:56.0221060Z       ],
2026-06-21T11:53:56.0221146Z       "stages": {
2026-06-21T11:53:56.0221236Z         "doc": {
2026-06-21T11:53:56.0221321Z           "complete": true,
2026-06-21T11:53:56.0221418Z           "evidence": [
2026-06-21T11:53:56.0221498Z             {
2026-06-21T11:53:56.0221612Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0221694Z               "line": 366
2026-06-21T11:53:56.0221775Z             }
2026-06-21T11:53:56.0221856Z           ]
2026-06-21T11:53:56.0221936Z         },
2026-06-21T11:53:56.0222023Z         "impl": {
2026-06-21T11:53:56.0222118Z           "complete": true,
2026-06-21T11:53:56.0222199Z           "evidence": [
2026-06-21T11:53:56.0222285Z             {
2026-06-21T11:53:56.0222391Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T11:53:56.0222475Z               "line": 87
2026-06-21T11:53:56.0222556Z             },
2026-06-21T11:53:56.0222643Z             {
2026-06-21T11:53:56.0222752Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:56.0222847Z               "line": 114
2026-06-21T11:53:56.0222933Z             },
2026-06-21T11:53:56.0223011Z             {
2026-06-21T11:53:56.0223142Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0223224Z               "line": 55
2026-06-21T11:53:56.0223311Z             },
2026-06-21T11:53:56.0223396Z             {
2026-06-21T11:53:56.0223519Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.0223605Z               "line": 31
2026-06-21T11:53:56.0223681Z             },
2026-06-21T11:53:56.0223758Z             {
2026-06-21T11:53:56.0223871Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.0223958Z               "line": 446
2026-06-21T11:53:56.0224044Z             },
2026-06-21T11:53:56.0224133Z             {
2026-06-21T11:53:56.0224258Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0224363Z               "line": 95
2026-06-21T11:53:56.0224448Z             },
2026-06-21T11:53:56.0224534Z             {
2026-06-21T11:53:56.0224663Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.0224744Z               "line": 29
2026-06-21T11:53:56.0224834Z             },
2026-06-21T11:53:56.0224912Z             {
2026-06-21T11:53:56.0225025Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.0225121Z               "line": 104
2026-06-21T11:53:56.0225203Z             },
2026-06-21T11:53:56.0225288Z             {
2026-06-21T11:53:56.0225411Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0225502Z               "line": 208
2026-06-21T11:53:56.0225585Z             },
2026-06-21T11:53:56.0225673Z             {
2026-06-21T11:53:56.0225797Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T11:53:56.0225878Z               "line": 28
2026-06-21T11:53:56.0225963Z             },
2026-06-21T11:53:56.0226157Z             {
2026-06-21T11:53:56.0226277Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T11:53:56.0226452Z               "line": 74
2026-06-21T11:53:56.0226539Z             },
2026-06-21T11:53:56.0226625Z             {
2026-06-21T11:53:56.0226752Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T11:53:56.0226849Z               "line": 32
2026-06-21T11:53:56.0226940Z             },
2026-06-21T11:53:56.0227010Z             {
2026-06-21T11:53:56.0227130Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0227216Z               "line": 40
2026-06-21T11:53:56.0227306Z             },
2026-06-21T11:53:56.0227387Z             {
2026-06-21T11:53:56.0227507Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0227602Z               "line": 184
2026-06-21T11:53:56.0227673Z             },
2026-06-21T11:53:56.0227750Z             {
2026-06-21T11:53:56.0227860Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0227959Z               "line": 61
2026-06-21T11:53:56.0228045Z             },
2026-06-21T11:53:56.0228128Z             {
2026-06-21T11:53:56.0228255Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0228336Z               "line": 131
2026-06-21T11:53:56.0228428Z             },
2026-06-21T11:53:56.0228509Z             {
2026-06-21T11:53:56.0228621Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T11:53:56.0228707Z               "line": 223
2026-06-21T11:53:56.0228797Z             },
2026-06-21T11:53:56.0228886Z             {
2026-06-21T11:53:56.0229072Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T11:53:56.0229167Z               "line": 37
2026-06-21T11:53:56.0229239Z             },
2026-06-21T11:53:56.0229319Z             {
2026-06-21T11:53:56.0229440Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.0229535Z               "line": 38
2026-06-21T11:53:56.0229624Z             },
2026-06-21T11:53:56.0229716Z             {
2026-06-21T11:53:56.0229830Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T11:53:56.0229920Z               "line": 36
2026-06-21T11:53:56.0230001Z             },
2026-06-21T11:53:56.0230083Z             {
2026-06-21T11:53:56.0230198Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T11:53:56.0230283Z               "line": 40
2026-06-21T11:53:56.0230365Z             }
2026-06-21T11:53:56.0230450Z           ]
2026-06-21T11:53:56.0230526Z         },
2026-06-21T11:53:56.0230607Z         "int": {
2026-06-21T11:53:56.0230703Z           "complete": false,
2026-06-21T11:53:56.0230793Z           "evidence": []
2026-06-21T11:53:56.0230870Z         },
2026-06-21T11:53:56.0230951Z         "unit": {
2026-06-21T11:53:56.0231038Z           "complete": true,
2026-06-21T11:53:56.0231127Z           "evidence": [
2026-06-21T11:53:56.0231207Z             {
2026-06-21T11:53:56.0231331Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0231425Z               "line": 212
2026-06-21T11:53:56.0231519Z             },
2026-06-21T11:53:56.0231600Z             {
2026-06-21T11:53:56.0231740Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T11:53:56.0231824Z               "line": 136
2026-06-21T11:53:56.0231905Z             },
2026-06-21T11:53:56.0231992Z             {
2026-06-21T11:53:56.0232120Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T11:53:56.0232206Z               "line": 685
2026-06-21T11:53:56.0232288Z             },
2026-06-21T11:53:56.0232378Z             {
2026-06-21T11:53:56.0232496Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T11:53:56.0232588Z               "line": 224
2026-06-21T11:53:56.0232674Z             },
2026-06-21T11:53:56.0232755Z             {
2026-06-21T11:53:56.0232868Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T11:53:56.0232961Z               "line": 206
2026-06-21T11:53:56.0233045Z             },
2026-06-21T11:53:56.0233126Z             {
2026-06-21T11:53:56.0233373Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T11:53:56.0233460Z               "line": 112
2026-06-21T11:53:56.0233637Z             },
2026-06-21T11:53:56.0233717Z             {
2026-06-21T11:53:56.0233833Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T11:53:56.0233919Z               "line": 157
2026-06-21T11:53:56.0234003Z             },
2026-06-21T11:53:56.0234093Z             {
2026-06-21T11:53:56.0234213Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.0234295Z               "line": 215
2026-06-21T11:53:56.0234384Z             },
2026-06-21T11:53:56.0234469Z             {
2026-06-21T11:53:56.0234594Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T11:53:56.0234670Z               "line": 141
2026-06-21T11:53:56.0234756Z             },
2026-06-21T11:53:56.0234838Z             {
2026-06-21T11:53:56.0234952Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T11:53:56.0235051Z               "line": 162
2026-06-21T11:53:56.0235133Z             }
2026-06-21T11:53:56.0235214Z           ]
2026-06-21T11:53:56.0235305Z         }
2026-06-21T11:53:56.0237971Z       }
2026-06-21T11:53:56.0238086Z     },
2026-06-21T11:53:56.0238157Z     {
2026-06-21T11:53:56.0238300Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T11:53:56.0240291Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T11:53:56.0240419Z       "requiredStages": [
2026-06-21T11:53:56.0240504Z         "doc",
2026-06-21T11:53:56.0240591Z         "impl",
2026-06-21T11:53:56.0240672Z         "unit",
2026-06-21T11:53:56.0240753Z         "int"
2026-06-21T11:53:56.0240848Z       ],
2026-06-21T11:53:56.0240939Z       "stages": {
2026-06-21T11:53:56.0241024Z         "doc": {
2026-06-21T11:53:56.0241124Z           "complete": true,
2026-06-21T11:53:56.0241211Z           "evidence": [
2026-06-21T11:53:56.0241297Z             {
2026-06-21T11:53:56.0241405Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0241502Z               "line": 250
2026-06-21T11:53:56.0241588Z             }
2026-06-21T11:53:56.0241659Z           ]
2026-06-21T11:53:56.0241748Z         },
2026-06-21T11:53:56.0241828Z         "impl": {
2026-06-21T11:53:56.0241919Z           "complete": true,
2026-06-21T11:53:56.0241999Z           "evidence": [
2026-06-21T11:53:56.0242084Z             {
2026-06-21T11:53:56.0242204Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T11:53:56.0242295Z               "line": 135
2026-06-21T11:53:56.0242380Z             },
2026-06-21T11:53:56.0242461Z             {
2026-06-21T11:53:56.0242572Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T11:53:56.0242657Z               "line": 157
2026-06-21T11:53:56.0242742Z             }
2026-06-21T11:53:56.0242829Z           ]
2026-06-21T11:53:56.0242910Z         },
2026-06-21T11:53:56.0242986Z         "int": {
2026-06-21T11:53:56.0243080Z           "complete": true,
2026-06-21T11:53:56.0243162Z           "evidence": [
2026-06-21T11:53:56.0243243Z             {
2026-06-21T11:53:56.0243371Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T11:53:56.0243463Z               "line": 15
2026-06-21T11:53:56.0243549Z             }
2026-06-21T11:53:56.0243634Z           ]
2026-06-21T11:53:56.0243715Z         },
2026-06-21T11:53:56.0243811Z         "unit": {
2026-06-21T11:53:56.0243906Z           "complete": true,
2026-06-21T11:53:56.0244131Z           "evidence": [
2026-06-21T11:53:56.0244216Z             {
2026-06-21T11:53:56.0244344Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T11:53:56.0244526Z               "line": 233
2026-06-21T11:53:56.0244610Z             }
2026-06-21T11:53:56.0244691Z           ]
2026-06-21T11:53:56.0244768Z         }
2026-06-21T11:53:56.0244855Z       }
2026-06-21T11:53:56.0244934Z     },
2026-06-21T11:53:56.0245020Z     {
2026-06-21T11:53:56.0245145Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T11:53:56.0245297Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T11:53:56.0245398Z       "requiredStages": [
2026-06-21T11:53:56.0245478Z         "impl",
2026-06-21T11:53:56.0245568Z         "unit"
2026-06-21T11:53:56.0245645Z       ],
2026-06-21T11:53:56.0245722Z       "stages": {
2026-06-21T11:53:56.0245807Z         "doc": {
2026-06-21T11:53:56.0245893Z           "complete": false,
2026-06-21T11:53:56.0245988Z           "evidence": []
2026-06-21T11:53:56.0246071Z         },
2026-06-21T11:53:56.0246169Z         "impl": {
2026-06-21T11:53:56.0246265Z           "complete": true,
2026-06-21T11:53:56.0246352Z           "evidence": [
2026-06-21T11:53:56.0246437Z             {
2026-06-21T11:53:56.0246555Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0246652Z               "line": 95
2026-06-21T11:53:56.0246724Z             },
2026-06-21T11:53:56.0246808Z             {
2026-06-21T11:53:56.0246931Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0247017Z               "line": 117
2026-06-21T11:53:56.0247106Z             }
2026-06-21T11:53:56.0247187Z           ]
2026-06-21T11:53:56.0247267Z         },
2026-06-21T11:53:56.0247354Z         "int": {
2026-06-21T11:53:56.0247445Z           "complete": false,
2026-06-21T11:53:56.0247525Z           "evidence": []
2026-06-21T11:53:56.0247611Z         },
2026-06-21T11:53:56.0247688Z         "unit": {
2026-06-21T11:53:56.0247782Z           "complete": true,
2026-06-21T11:53:56.0247877Z           "evidence": [
2026-06-21T11:53:56.0247970Z             {
2026-06-21T11:53:56.0248088Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0248183Z               "line": 250
2026-06-21T11:53:56.0248265Z             },
2026-06-21T11:53:56.0248345Z             {
2026-06-21T11:53:56.0248455Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0248545Z               "line": 412
2026-06-21T11:53:56.0248618Z             },
2026-06-21T11:53:56.0248708Z             {
2026-06-21T11:53:56.0248817Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0248899Z               "line": 611
2026-06-21T11:53:56.0249075Z             },
2026-06-21T11:53:56.0249165Z             {
2026-06-21T11:53:56.0249276Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0249356Z               "line": 669
2026-06-21T11:53:56.0249447Z             }
2026-06-21T11:53:56.0249529Z           ]
2026-06-21T11:53:56.0249600Z         }
2026-06-21T11:53:56.0249689Z       }
2026-06-21T11:53:56.0249774Z     },
2026-06-21T11:53:56.0249855Z     {
2026-06-21T11:53:56.0249974Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T11:53:56.0252442Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T11:53:56.0252653Z       "requiredStages": [
2026-06-21T11:53:56.0252740Z         "impl",
2026-06-21T11:53:56.0252916Z         "unit",
2026-06-21T11:53:56.0253006Z         "int"
2026-06-21T11:53:56.0253079Z       ],
2026-06-21T11:53:56.0253169Z       "stages": {
2026-06-21T11:53:56.0253250Z         "doc": {
2026-06-21T11:53:56.0253354Z           "complete": false,
2026-06-21T11:53:56.0253441Z           "evidence": []
2026-06-21T11:53:56.0253522Z         },
2026-06-21T11:53:56.0253602Z         "impl": {
2026-06-21T11:53:56.0253689Z           "complete": true,
2026-06-21T11:53:56.0253780Z           "evidence": [
2026-06-21T11:53:56.0253860Z             {
2026-06-21T11:53:56.0253975Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0254066Z               "line": 925
2026-06-21T11:53:56.0254151Z             },
2026-06-21T11:53:56.0254237Z             {
2026-06-21T11:53:56.0254343Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0254438Z               "line": 994
2026-06-21T11:53:56.0254523Z             }
2026-06-21T11:53:56.0254604Z           ]
2026-06-21T11:53:56.0254696Z         },
2026-06-21T11:53:56.0254776Z         "int": {
2026-06-21T11:53:56.0254862Z           "complete": true,
2026-06-21T11:53:56.0254953Z           "evidence": [
2026-06-21T11:53:56.0255034Z             {
2026-06-21T11:53:56.0255165Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T11:53:56.0255251Z               "line": 187
2026-06-21T11:53:56.0255337Z             },
2026-06-21T11:53:56.0255420Z             {
2026-06-21T11:53:56.0255542Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T11:53:56.0255629Z               "line": 348
2026-06-21T11:53:56.0255714Z             }
2026-06-21T11:53:56.0255805Z           ]
2026-06-21T11:53:56.0255890Z         },
2026-06-21T11:53:56.0255982Z         "unit": {
2026-06-21T11:53:56.0256072Z           "complete": true,
2026-06-21T11:53:56.0256162Z           "evidence": [
2026-06-21T11:53:56.0256258Z             {
2026-06-21T11:53:56.0256377Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0256467Z               "line": 1206
2026-06-21T11:53:56.0256548Z             },
2026-06-21T11:53:56.0256636Z             {
2026-06-21T11:53:56.0256744Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0256834Z               "line": 8116
2026-06-21T11:53:56.0256917Z             }
2026-06-21T11:53:56.0256997Z           ]
2026-06-21T11:53:56.0257082Z         }
2026-06-21T11:53:56.0257164Z       }
2026-06-21T11:53:56.0257251Z     },
2026-06-21T11:53:56.0257335Z     {
2026-06-21T11:53:56.0257435Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T11:53:56.0257616Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T11:53:56.0257713Z       "requiredStages": [
2026-06-21T11:53:56.0257803Z         "impl",
2026-06-21T11:53:56.0257885Z         "unit"
2026-06-21T11:53:56.0257967Z       ],
2026-06-21T11:53:56.0258052Z       "stages": {
2026-06-21T11:53:56.0258147Z         "doc": {
2026-06-21T11:53:56.0258239Z           "complete": false,
2026-06-21T11:53:56.0258343Z           "evidence": []
2026-06-21T11:53:56.0258428Z         },
2026-06-21T11:53:56.0258515Z         "impl": {
2026-06-21T11:53:56.0258615Z           "complete": true,
2026-06-21T11:53:56.0258700Z           "evidence": [
2026-06-21T11:53:56.0258786Z             {
2026-06-21T11:53:56.0258896Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0259053Z               "line": 262
2026-06-21T11:53:56.0259130Z             },
2026-06-21T11:53:56.0259211Z             {
2026-06-21T11:53:56.0259320Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0259410Z               "line": 307
2026-06-21T11:53:56.0259498Z             },
2026-06-21T11:53:56.0259573Z             {
2026-06-21T11:53:56.0259687Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0259774Z               "line": 319
2026-06-21T11:53:56.0259949Z             }
2026-06-21T11:53:56.0260031Z           ]
2026-06-21T11:53:56.0260113Z         },
2026-06-21T11:53:56.0260278Z         "int": {
2026-06-21T11:53:56.0260372Z           "complete": false,
2026-06-21T11:53:56.0260454Z           "evidence": []
2026-06-21T11:53:56.0260534Z         },
2026-06-21T11:53:56.0260624Z         "unit": {
2026-06-21T11:53:56.0260714Z           "complete": true,
2026-06-21T11:53:56.0260791Z           "evidence": [
2026-06-21T11:53:56.0260872Z             {
2026-06-21T11:53:56.0260985Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0261077Z               "line": 455
2026-06-21T11:53:56.0261158Z             },
2026-06-21T11:53:56.0261243Z             {
2026-06-21T11:53:56.0261353Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0261439Z               "line": 499
2026-06-21T11:53:56.0261525Z             }
2026-06-21T11:53:56.0261605Z           ]
2026-06-21T11:53:56.0261687Z         }
2026-06-21T11:53:56.0261768Z       }
2026-06-21T11:53:56.0261854Z     },
2026-06-21T11:53:56.0261939Z     {
2026-06-21T11:53:56.0262036Z       "id": "REQ-HOST-RUN-1",
2026-06-21T11:53:56.0264454Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T11:53:56.0264563Z       "requiredStages": [
2026-06-21T11:53:56.0264645Z         "impl",
2026-06-21T11:53:56.0264745Z         "unit",
2026-06-21T11:53:56.0264830Z         "int"
2026-06-21T11:53:56.0264908Z       ],
2026-06-21T11:53:56.0264993Z       "stages": {
2026-06-21T11:53:56.0265078Z         "doc": {
2026-06-21T11:53:56.0265184Z           "complete": false,
2026-06-21T11:53:56.0265270Z           "evidence": []
2026-06-21T11:53:56.0265350Z         },
2026-06-21T11:53:56.0265432Z         "impl": {
2026-06-21T11:53:56.0265513Z           "complete": true,
2026-06-21T11:53:56.0265614Z           "evidence": [
2026-06-21T11:53:56.0265693Z             {
2026-06-21T11:53:56.0265821Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0265907Z               "line": 30
2026-06-21T11:53:56.0265989Z             },
2026-06-21T11:53:56.0266069Z             {
2026-06-21T11:53:56.0266194Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0266289Z               "line": 76
2026-06-21T11:53:56.0266374Z             },
2026-06-21T11:53:56.0266465Z             {
2026-06-21T11:53:56.0266590Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0266689Z               "line": 181
2026-06-21T11:53:56.0266775Z             },
2026-06-21T11:53:56.0266857Z             {
2026-06-21T11:53:56.0266965Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0267055Z               "line": 1266
2026-06-21T11:53:56.0267143Z             }
2026-06-21T11:53:56.0267224Z           ]
2026-06-21T11:53:56.0267309Z         },
2026-06-21T11:53:56.0267394Z         "int": {
2026-06-21T11:53:56.0267477Z           "complete": true,
2026-06-21T11:53:56.0267567Z           "evidence": [
2026-06-21T11:53:56.0267652Z             {
2026-06-21T11:53:56.0267772Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0267854Z               "line": 285
2026-06-21T11:53:56.0267942Z             }
2026-06-21T11:53:56.0268023Z           ]
2026-06-21T11:53:56.0268109Z         },
2026-06-21T11:53:56.0268190Z         "unit": {
2026-06-21T11:53:56.0268382Z           "complete": true,
2026-06-21T11:53:56.0268469Z           "evidence": [
2026-06-21T11:53:56.0268631Z             {
2026-06-21T11:53:56.0268755Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0268846Z               "line": 229
2026-06-21T11:53:56.0268922Z             },
2026-06-21T11:53:56.0269109Z             {
2026-06-21T11:53:56.0269227Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0269313Z               "line": 296
2026-06-21T11:53:56.0269395Z             },
2026-06-21T11:53:56.0269475Z             {
2026-06-21T11:53:56.0269603Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0269690Z               "line": 419
2026-06-21T11:53:56.0269772Z             }
2026-06-21T11:53:56.0269852Z           ]
2026-06-21T11:53:56.0269971Z         }
2026-06-21T11:53:56.0270053Z       }
2026-06-21T11:53:56.0270133Z     },
2026-06-21T11:53:56.0270219Z     {
2026-06-21T11:53:56.0270320Z       "id": "REQ-HOST-RUN-2",
2026-06-21T11:53:56.0272032Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T11:53:56.0272151Z       "requiredStages": [
2026-06-21T11:53:56.0272261Z         "impl",
2026-06-21T11:53:56.0272357Z         "unit",
2026-06-21T11:53:56.0272433Z         "int"
2026-06-21T11:53:56.0272509Z       ],
2026-06-21T11:53:56.0272591Z       "stages": {
2026-06-21T11:53:56.0272690Z         "doc": {
2026-06-21T11:53:56.0272785Z           "complete": false,
2026-06-21T11:53:56.0272887Z           "evidence": []
2026-06-21T11:53:56.0272968Z         },
2026-06-21T11:53:56.0273052Z         "impl": {
2026-06-21T11:53:56.0273167Z           "complete": true,
2026-06-21T11:53:56.0273264Z           "evidence": [
2026-06-21T11:53:56.0273348Z             {
2026-06-21T11:53:56.0273480Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0273567Z               "line": 182
2026-06-21T11:53:56.0273647Z             },
2026-06-21T11:53:56.0273731Z             {
2026-06-21T11:53:56.0273850Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T11:53:56.0273942Z               "line": 113
2026-06-21T11:53:56.0274027Z             }
2026-06-21T11:53:56.0274112Z           ]
2026-06-21T11:53:56.0274194Z         },
2026-06-21T11:53:56.0274276Z         "int": {
2026-06-21T11:53:56.0274361Z           "complete": true,
2026-06-21T11:53:56.0274441Z           "evidence": [
2026-06-21T11:53:56.0274538Z             {
2026-06-21T11:53:56.0274661Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0274751Z               "line": 572
2026-06-21T11:53:56.0274824Z             }
2026-06-21T11:53:56.0274919Z           ]
2026-06-21T11:53:56.0275000Z         },
2026-06-21T11:53:56.0275085Z         "unit": {
2026-06-21T11:53:56.0275168Z           "complete": true,
2026-06-21T11:53:56.0275267Z           "evidence": [
2026-06-21T11:53:56.0275348Z             {
2026-06-21T11:53:56.0275458Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T11:53:56.0275553Z               "line": 86
2026-06-21T11:53:56.0275633Z             }
2026-06-21T11:53:56.0275714Z           ]
2026-06-21T11:53:56.0275802Z         }
2026-06-21T11:53:56.0275891Z       }
2026-06-21T11:53:56.0275977Z     },
2026-06-21T11:53:56.0276059Z     {
2026-06-21T11:53:56.0276154Z       "id": "REQ-INFRA-1",
2026-06-21T11:53:56.0276333Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T11:53:56.0276643Z       "requiredStages": [],
2026-06-21T11:53:56.0276811Z       "stages": {
2026-06-21T11:53:56.0276892Z         "doc": {
2026-06-21T11:53:56.0276986Z           "complete": false,
2026-06-21T11:53:56.0277069Z           "evidence": []
2026-06-21T11:53:56.0277164Z         },
2026-06-21T11:53:56.0277240Z         "impl": {
2026-06-21T11:53:56.0277335Z           "complete": false,
2026-06-21T11:53:56.0277417Z           "evidence": []
2026-06-21T11:53:56.0277511Z         },
2026-06-21T11:53:56.0277602Z         "int": {
2026-06-21T11:53:56.0277688Z           "complete": false,
2026-06-21T11:53:56.0277789Z           "evidence": []
2026-06-21T11:53:56.0277864Z         },
2026-06-21T11:53:56.0277950Z         "unit": {
2026-06-21T11:53:56.0278037Z           "complete": false,
2026-06-21T11:53:56.0278137Z           "evidence": []
2026-06-21T11:53:56.0278217Z         }
2026-06-21T11:53:56.0278299Z       }
2026-06-21T11:53:56.0278385Z     },
2026-06-21T11:53:56.0278474Z     {
2026-06-21T11:53:56.0278559Z       "id": "REQ-INST-1",
2026-06-21T11:53:56.0278721Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T11:53:56.0278829Z       "requiredStages": [],
2026-06-21T11:53:56.0278924Z       "stages": {
2026-06-21T11:53:56.0279077Z         "doc": {
2026-06-21T11:53:56.0279167Z           "complete": false,
2026-06-21T11:53:56.0279257Z           "evidence": []
2026-06-21T11:53:56.0279344Z         },
2026-06-21T11:53:56.0279425Z         "impl": {
2026-06-21T11:53:56.0279520Z           "complete": false,
2026-06-21T11:53:56.0279616Z           "evidence": []
2026-06-21T11:53:56.0279702Z         },
2026-06-21T11:53:56.0279792Z         "int": {
2026-06-21T11:53:56.0279877Z           "complete": false,
2026-06-21T11:53:56.0279969Z           "evidence": []
2026-06-21T11:53:56.0280050Z         },
2026-06-21T11:53:56.0280131Z         "unit": {
2026-06-21T11:53:56.0280221Z           "complete": false,
2026-06-21T11:53:56.0280308Z           "evidence": []
2026-06-21T11:53:56.0280402Z         }
2026-06-21T11:53:56.0280488Z       }
2026-06-21T11:53:56.0280570Z     },
2026-06-21T11:53:56.0280647Z     {
2026-06-21T11:53:56.0280745Z       "id": "REQ-INST-10",
2026-06-21T11:53:56.0280961Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T11:53:56.0281055Z       "requiredStages": [
2026-06-21T11:53:56.0281132Z         "impl",
2026-06-21T11:53:56.0281219Z         "unit"
2026-06-21T11:53:56.0281309Z       ],
2026-06-21T11:53:56.0281393Z       "stages": {
2026-06-21T11:53:56.0281478Z         "doc": {
2026-06-21T11:53:56.0281574Z           "complete": false,
2026-06-21T11:53:56.0281668Z           "evidence": []
2026-06-21T11:53:56.0281758Z         },
2026-06-21T11:53:56.0281844Z         "impl": {
2026-06-21T11:53:56.0281925Z           "complete": true,
2026-06-21T11:53:56.0282011Z           "evidence": [
2026-06-21T11:53:56.0282091Z             {
2026-06-21T11:53:56.0282226Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0282317Z               "line": 648
2026-06-21T11:53:56.0282411Z             },
2026-06-21T11:53:56.0282478Z             {
2026-06-21T11:53:56.0282607Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0282692Z               "line": 725
2026-06-21T11:53:56.0282778Z             },
2026-06-21T11:53:56.0282865Z             {
2026-06-21T11:53:56.0282969Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T11:53:56.0283055Z               "line": 13
2026-06-21T11:53:56.0283137Z             },
2026-06-21T11:53:56.0283227Z             {
2026-06-21T11:53:56.0283336Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T11:53:56.0283422Z               "line": 67
2026-06-21T11:53:56.0283519Z             },
2026-06-21T11:53:56.0283603Z             {
2026-06-21T11:53:56.0283713Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0283805Z               "line": 18
2026-06-21T11:53:56.0283885Z             },
2026-06-21T11:53:56.0284084Z             {
2026-06-21T11:53:56.0284193Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0284367Z               "line": 444
2026-06-21T11:53:56.0284449Z             }
2026-06-21T11:53:56.0284531Z           ]
2026-06-21T11:53:56.0284616Z         },
2026-06-21T11:53:56.0284701Z         "int": {
2026-06-21T11:53:56.0284797Z           "complete": false,
2026-06-21T11:53:56.0284888Z           "evidence": []
2026-06-21T11:53:56.0284968Z         },
2026-06-21T11:53:56.0285054Z         "unit": {
2026-06-21T11:53:56.0285145Z           "complete": true,
2026-06-21T11:53:56.0285226Z           "evidence": [
2026-06-21T11:53:56.0285311Z             {
2026-06-21T11:53:56.0285427Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0285526Z               "line": 932
2026-06-21T11:53:56.0285622Z             },
2026-06-21T11:53:56.0285689Z             {
2026-06-21T11:53:56.0285817Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0285917Z               "line": 1309
2026-06-21T11:53:56.0286008Z             },
2026-06-21T11:53:56.0286090Z             {
2026-06-21T11:53:56.0286218Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0286304Z               "line": 1320
2026-06-21T11:53:56.0286390Z             },
2026-06-21T11:53:56.0286484Z             {
2026-06-21T11:53:56.0286599Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0286691Z               "line": 1336
2026-06-21T11:53:56.0286780Z             },
2026-06-21T11:53:56.0286865Z             {
2026-06-21T11:53:56.0286984Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0287066Z               "line": 1352
2026-06-21T11:53:56.0287151Z             },
2026-06-21T11:53:56.0287232Z             {
2026-06-21T11:53:56.0287352Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0287452Z               "line": 1374
2026-06-21T11:53:56.0287527Z             },
2026-06-21T11:53:56.0287634Z             {
2026-06-21T11:53:56.0287747Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0287838Z               "line": 1679
2026-06-21T11:53:56.0287919Z             },
2026-06-21T11:53:56.0288005Z             {
2026-06-21T11:53:56.0288124Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T11:53:56.0288214Z               "line": 130
2026-06-21T11:53:56.0288301Z             },
2026-06-21T11:53:56.0288386Z             {
2026-06-21T11:53:56.0288500Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T11:53:56.0288588Z               "line": 167
2026-06-21T11:53:56.0288673Z             },
2026-06-21T11:53:56.0288753Z             {
2026-06-21T11:53:56.0288859Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T11:53:56.0289020Z               "line": 175
2026-06-21T11:53:56.0289095Z             },
2026-06-21T11:53:56.0289186Z             {
2026-06-21T11:53:56.0289291Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T11:53:56.0289394Z               "line": 183
2026-06-21T11:53:56.0289479Z             },
2026-06-21T11:53:56.0289570Z             {
2026-06-21T11:53:56.0289690Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0289770Z               "line": 896
2026-06-21T11:53:56.0289861Z             }
2026-06-21T11:53:56.0289938Z           ]
2026-06-21T11:53:56.0290023Z         }
2026-06-21T11:53:56.0290108Z       }
2026-06-21T11:53:56.0290195Z     },
2026-06-21T11:53:56.0290281Z     {
2026-06-21T11:53:56.0290371Z       "id": "REQ-INST-11",
2026-06-21T11:53:56.0290582Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T11:53:56.0290681Z       "requiredStages": [
2026-06-21T11:53:56.0290767Z         "impl",
2026-06-21T11:53:56.0290849Z         "unit"
2026-06-21T11:53:56.0290920Z       ],
2026-06-21T11:53:56.0291010Z       "stages": {
2026-06-21T11:53:56.0291096Z         "doc": {
2026-06-21T11:53:56.0291183Z           "complete": false,
2026-06-21T11:53:56.0291372Z           "evidence": []
2026-06-21T11:53:56.0291460Z         },
2026-06-21T11:53:56.0291639Z         "impl": {
2026-06-21T11:53:56.0291726Z           "complete": true,
2026-06-21T11:53:56.0291812Z           "evidence": [
2026-06-21T11:53:56.0291898Z             {
2026-06-21T11:53:56.0292015Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0292096Z               "line": 514
2026-06-21T11:53:56.0292187Z             },
2026-06-21T11:53:56.0292275Z             {
2026-06-21T11:53:56.0292399Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0292495Z               "line": 297
2026-06-21T11:53:56.0292576Z             },
2026-06-21T11:53:56.0292661Z             {
2026-06-21T11:53:56.0292767Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T11:53:56.0292857Z               "line": 59
2026-06-21T11:53:56.0292942Z             },
2026-06-21T11:53:56.0293023Z             {
2026-06-21T11:53:56.0293134Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0293234Z               "line": 5291
2026-06-21T11:53:56.0293324Z             },
2026-06-21T11:53:56.0293401Z             {
2026-06-21T11:53:56.0293510Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0293605Z               "line": 7137
2026-06-21T11:53:56.0293687Z             }
2026-06-21T11:53:56.0293764Z           ]
2026-06-21T11:53:56.0293844Z         },
2026-06-21T11:53:56.0293929Z         "int": {
2026-06-21T11:53:56.0294021Z           "complete": false,
2026-06-21T11:53:56.0294098Z           "evidence": []
2026-06-21T11:53:56.0294182Z         },
2026-06-21T11:53:56.0294268Z         "unit": {
2026-06-21T11:53:56.0294370Z           "complete": true,
2026-06-21T11:53:56.0294459Z           "evidence": [
2026-06-21T11:53:56.0294539Z             {
2026-06-21T11:53:56.0294658Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0294753Z               "line": 1479
2026-06-21T11:53:56.0294837Z             },
2026-06-21T11:53:56.0294922Z             {
2026-06-21T11:53:56.0295047Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0295133Z               "line": 1512
2026-06-21T11:53:56.0295218Z             },
2026-06-21T11:53:56.0295309Z             {
2026-06-21T11:53:56.0295429Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0295523Z               "line": 527
2026-06-21T11:53:56.0295610Z             },
2026-06-21T11:53:56.0295696Z             {
2026-06-21T11:53:56.0295810Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T11:53:56.0295915Z               "line": 160
2026-06-21T11:53:56.0296001Z             },
2026-06-21T11:53:56.0296086Z             {
2026-06-21T11:53:56.0296210Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T11:53:56.0296298Z               "line": 190
2026-06-21T11:53:56.0296387Z             },
2026-06-21T11:53:56.0296463Z             {
2026-06-21T11:53:56.0296578Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T11:53:56.0296678Z               "line": 225
2026-06-21T11:53:56.0296759Z             },
2026-06-21T11:53:56.0296849Z             {
2026-06-21T11:53:56.0296951Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0297039Z               "line": 7994
2026-06-21T11:53:56.0297126Z             }
2026-06-21T11:53:56.0297213Z           ]
2026-06-21T11:53:56.0297298Z         }
2026-06-21T11:53:56.0297382Z       }
2026-06-21T11:53:56.0297467Z     },
2026-06-21T11:53:56.0297544Z     {
2026-06-21T11:53:56.0297641Z       "id": "REQ-INST-12",
2026-06-21T11:53:56.0297917Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T11:53:56.0298022Z       "requiredStages": [
2026-06-21T11:53:56.0298111Z         "impl",
2026-06-21T11:53:56.0298194Z         "unit"
2026-06-21T11:53:56.0298279Z       ],
2026-06-21T11:53:56.0298360Z       "stages": {
2026-06-21T11:53:56.0298460Z         "doc": {
2026-06-21T11:53:56.0298637Z           "complete": false,
2026-06-21T11:53:56.0298736Z           "evidence": []
2026-06-21T11:53:56.0298880Z         },
2026-06-21T11:53:56.0299047Z         "impl": {
2026-06-21T11:53:56.0299138Z           "complete": true,
2026-06-21T11:53:56.0299223Z           "evidence": [
2026-06-21T11:53:56.0299304Z             {
2026-06-21T11:53:56.0299433Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0299520Z               "line": 566
2026-06-21T11:53:56.0299609Z             },
2026-06-21T11:53:56.0299689Z             {
2026-06-21T11:53:56.0299818Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0299907Z               "line": 659
2026-06-21T11:53:56.0300001Z             },
2026-06-21T11:53:56.0300087Z             {
2026-06-21T11:53:56.0300212Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0300306Z               "line": 739
2026-06-21T11:53:56.0300383Z             },
2026-06-21T11:53:56.0300464Z             {
2026-06-21T11:53:56.0300583Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0300673Z               "line": 96
2026-06-21T11:53:56.0300760Z             },
2026-06-21T11:53:56.0300851Z             {
2026-06-21T11:53:56.0300973Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0301051Z               "line": 269
2026-06-21T11:53:56.0301142Z             },
2026-06-21T11:53:56.0301218Z             {
2026-06-21T11:53:56.0301337Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:56.0301423Z               "line": 148
2026-06-21T11:53:56.0301508Z             }
2026-06-21T11:53:56.0301603Z           ]
2026-06-21T11:53:56.0301685Z         },
2026-06-21T11:53:56.0301767Z         "int": {
2026-06-21T11:53:56.0301860Z           "complete": false,
2026-06-21T11:53:56.0301961Z           "evidence": []
2026-06-21T11:53:56.0302043Z         },
2026-06-21T11:53:56.0302133Z         "unit": {
2026-06-21T11:53:56.0302219Z           "complete": true,
2026-06-21T11:53:56.0302320Z           "evidence": [
2026-06-21T11:53:56.0302411Z             {
2026-06-21T11:53:56.0302532Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0302627Z               "line": 1554
2026-06-21T11:53:56.0302713Z             },
2026-06-21T11:53:56.0302793Z             {
2026-06-21T11:53:56.0302911Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0302993Z               "line": 1577
2026-06-21T11:53:56.0303079Z             },
2026-06-21T11:53:56.0303160Z             {
2026-06-21T11:53:56.0303278Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0303361Z               "line": 1614
2026-06-21T11:53:56.0303442Z             },
2026-06-21T11:53:56.0303526Z             {
2026-06-21T11:53:56.0303642Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0303736Z               "line": 457
2026-06-21T11:53:56.0303813Z             },
2026-06-21T11:53:56.0303894Z             {
2026-06-21T11:53:56.0304023Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:56.0304109Z               "line": 185
2026-06-21T11:53:56.0304199Z             },
2026-06-21T11:53:56.0304286Z             {
2026-06-21T11:53:56.0304404Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:56.0304489Z               "line": 206
2026-06-21T11:53:56.0304572Z             },
2026-06-21T11:53:56.0304658Z             {
2026-06-21T11:53:56.0304771Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:56.0304857Z               "line": 232
2026-06-21T11:53:56.0304944Z             }
2026-06-21T11:53:56.0305029Z           ]
2026-06-21T11:53:56.0305104Z         }
2026-06-21T11:53:56.0305189Z       }
2026-06-21T11:53:56.0305276Z     },
2026-06-21T11:53:56.0305355Z     {
2026-06-21T11:53:56.0305445Z       "id": "REQ-INST-13",
2026-06-21T11:53:56.0305627Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T11:53:56.0305831Z       "requiredStages": [
2026-06-21T11:53:56.0305918Z         "impl",
2026-06-21T11:53:56.0306008Z         "unit"
2026-06-21T11:53:56.0306175Z       ],
2026-06-21T11:53:56.0306256Z       "stages": {
2026-06-21T11:53:56.0306346Z         "doc": {
2026-06-21T11:53:56.0306441Z           "complete": false,
2026-06-21T11:53:56.0306533Z           "evidence": []
2026-06-21T11:53:56.0306618Z         },
2026-06-21T11:53:56.0306708Z         "impl": {
2026-06-21T11:53:56.0306809Z           "complete": true,
2026-06-21T11:53:56.0306886Z           "evidence": [
2026-06-21T11:53:56.0306976Z             {
2026-06-21T11:53:56.0307090Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0307172Z               "line": 100
2026-06-21T11:53:56.0307256Z             },
2026-06-21T11:53:56.0307343Z             {
2026-06-21T11:53:56.0307468Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:56.0307548Z               "line": 171
2026-06-21T11:53:56.0307633Z             }
2026-06-21T11:53:56.0307724Z           ]
2026-06-21T11:53:56.0307811Z         },
2026-06-21T11:53:56.0307896Z         "int": {
2026-06-21T11:53:56.0307995Z           "complete": false,
2026-06-21T11:53:56.0308095Z           "evidence": []
2026-06-21T11:53:56.0308177Z         },
2026-06-21T11:53:56.0308267Z         "unit": {
2026-06-21T11:53:56.0311001Z           "complete": true,
2026-06-21T11:53:56.0311134Z           "evidence": [
2026-06-21T11:53:56.0311224Z             {
2026-06-21T11:53:56.0311354Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:56.0311449Z               "line": 261
2026-06-21T11:53:56.0311534Z             },
2026-06-21T11:53:56.0311616Z             {
2026-06-21T11:53:56.0311745Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T11:53:56.0311844Z               "line": 279
2026-06-21T11:53:56.0311916Z             }
2026-06-21T11:53:56.0312002Z           ]
2026-06-21T11:53:56.0312083Z         }
2026-06-21T11:53:56.0312173Z       }
2026-06-21T11:53:56.0312270Z     },
2026-06-21T11:53:56.0312350Z     {
2026-06-21T11:53:56.0312450Z       "id": "REQ-INST-14",
2026-06-21T11:53:56.0312826Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T11:53:56.0312933Z       "requiredStages": [
2026-06-21T11:53:56.0313013Z         "doc",
2026-06-21T11:53:56.0313102Z         "impl",
2026-06-21T11:53:56.0313187Z         "unit"
2026-06-21T11:53:56.0313264Z       ],
2026-06-21T11:53:56.0313349Z       "stages": {
2026-06-21T11:53:56.0313428Z         "doc": {
2026-06-21T11:53:56.0313529Z           "complete": true,
2026-06-21T11:53:56.0313625Z           "evidence": [
2026-06-21T11:53:56.0313706Z             {
2026-06-21T11:53:56.0313805Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0313887Z               "line": 588
2026-06-21T11:53:56.0313972Z             },
2026-06-21T11:53:56.0314044Z             {
2026-06-21T11:53:56.0314148Z               "path": "docs/STORAGE.md",
2026-06-21T11:53:56.0314235Z               "line": 49
2026-06-21T11:53:56.0314311Z             }
2026-06-21T11:53:56.0314396Z           ]
2026-06-21T11:53:56.0314482Z         },
2026-06-21T11:53:56.0314569Z         "impl": {
2026-06-21T11:53:56.0314649Z           "complete": true,
2026-06-21T11:53:56.0314740Z           "evidence": [
2026-06-21T11:53:56.0314822Z             {
2026-06-21T11:53:56.0314954Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0315040Z               "line": 410
2026-06-21T11:53:56.0315122Z             },
2026-06-21T11:53:56.0315199Z             {
2026-06-21T11:53:56.0315326Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0315418Z               "line": 367
2026-06-21T11:53:56.0315499Z             },
2026-06-21T11:53:56.0315584Z             {
2026-06-21T11:53:56.0315688Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0315779Z               "line": 293
2026-06-21T11:53:56.0316000Z             },
2026-06-21T11:53:56.0316086Z             {
2026-06-21T11:53:56.0316201Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0316386Z               "line": 1577
2026-06-21T11:53:56.0316469Z             }
2026-06-21T11:53:56.0316554Z           ]
2026-06-21T11:53:56.0316639Z         },
2026-06-21T11:53:56.0316725Z         "int": {
2026-06-21T11:53:56.0316826Z           "complete": false,
2026-06-21T11:53:56.0316916Z           "evidence": []
2026-06-21T11:53:56.0317001Z         },
2026-06-21T11:53:56.0317083Z         "unit": {
2026-06-21T11:53:56.0317173Z           "complete": true,
2026-06-21T11:53:56.0317254Z           "evidence": [
2026-06-21T11:53:56.0317340Z             {
2026-06-21T11:53:56.0317465Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0317550Z               "line": 1163
2026-06-21T11:53:56.0317636Z             },
2026-06-21T11:53:56.0317718Z             {
2026-06-21T11:53:56.0317845Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0317931Z               "line": 944
2026-06-21T11:53:56.0318014Z             },
2026-06-21T11:53:56.0318104Z             {
2026-06-21T11:53:56.0318217Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0318319Z               "line": 1205
2026-06-21T11:53:56.0318400Z             },
2026-06-21T11:53:56.0318479Z             {
2026-06-21T11:53:56.0318593Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0318689Z               "line": 659
2026-06-21T11:53:56.0318771Z             },
2026-06-21T11:53:56.0318855Z             {
2026-06-21T11:53:56.0319042Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0319123Z               "line": 8070
2026-06-21T11:53:56.0319213Z             }
2026-06-21T11:53:56.0319290Z           ]
2026-06-21T11:53:56.0319376Z         }
2026-06-21T11:53:56.0319461Z       }
2026-06-21T11:53:56.0319551Z     },
2026-06-21T11:53:56.0319633Z     {
2026-06-21T11:53:56.0319728Z       "id": "REQ-INST-15",
2026-06-21T11:53:56.0320448Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T11:53:56.0320548Z       "requiredStages": [
2026-06-21T11:53:56.0320635Z         "doc",
2026-06-21T11:53:56.0320719Z         "impl",
2026-06-21T11:53:56.0320795Z         "unit"
2026-06-21T11:53:56.0320881Z       ],
2026-06-21T11:53:56.0320966Z       "stages": {
2026-06-21T11:53:56.0321051Z         "doc": {
2026-06-21T11:53:56.0321145Z           "complete": true,
2026-06-21T11:53:56.0321231Z           "evidence": [
2026-06-21T11:53:56.0321309Z             {
2026-06-21T11:53:56.0321483Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T11:53:56.0321580Z               "line": 3
2026-06-21T11:53:56.0321666Z             }
2026-06-21T11:53:56.0321756Z           ]
2026-06-21T11:53:56.0321842Z         },
2026-06-21T11:53:56.0321923Z         "impl": {
2026-06-21T11:53:56.0322014Z           "complete": true,
2026-06-21T11:53:56.0322099Z           "evidence": [
2026-06-21T11:53:56.0322176Z             {
2026-06-21T11:53:56.0322295Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0322376Z               "line": 353
2026-06-21T11:53:56.0322457Z             },
2026-06-21T11:53:56.0322539Z             {
2026-06-21T11:53:56.0322643Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0322724Z               "line": 60
2026-06-21T11:53:56.0322805Z             },
2026-06-21T11:53:56.0322887Z             {
2026-06-21T11:53:56.0323015Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0323096Z               "line": 368
2026-06-21T11:53:56.0323183Z             },
2026-06-21T11:53:56.0323267Z             {
2026-06-21T11:53:56.0323386Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0323578Z               "line": 417
2026-06-21T11:53:56.0323662Z             },
2026-06-21T11:53:56.0323843Z             {
2026-06-21T11:53:56.0323951Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0324041Z               "line": 19
2026-06-21T11:53:56.0324128Z             },
2026-06-21T11:53:56.0324209Z             {
2026-06-21T11:53:56.0324322Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0324408Z               "line": 70
2026-06-21T11:53:56.0324490Z             },
2026-06-21T11:53:56.0324571Z             {
2026-06-21T11:53:56.0324675Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0324767Z               "line": 96
2026-06-21T11:53:56.0324848Z             },
2026-06-21T11:53:56.0324933Z             {
2026-06-21T11:53:56.0325033Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0325129Z               "line": 121
2026-06-21T11:53:56.0325219Z             },
2026-06-21T11:53:56.0325304Z             {
2026-06-21T11:53:56.0325415Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0325510Z               "line": 172
2026-06-21T11:53:56.0325596Z             },
2026-06-21T11:53:56.0325682Z             {
2026-06-21T11:53:56.0325792Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0325881Z               "line": 178
2026-06-21T11:53:56.0325968Z             },
2026-06-21T11:53:56.0326055Z             {
2026-06-21T11:53:56.0326159Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0326253Z               "line": 1469
2026-06-21T11:53:56.0326334Z             }
2026-06-21T11:53:56.0326424Z           ]
2026-06-21T11:53:56.0326508Z         },
2026-06-21T11:53:56.0326579Z         "int": {
2026-06-21T11:53:56.0326670Z           "complete": false,
2026-06-21T11:53:56.0326761Z           "evidence": []
2026-06-21T11:53:56.0326846Z         },
2026-06-21T11:53:56.0326927Z         "unit": {
2026-06-21T11:53:56.0327019Z           "complete": true,
2026-06-21T11:53:56.0327119Z           "evidence": [
2026-06-21T11:53:56.0327194Z             {
2026-06-21T11:53:56.0327319Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0327405Z               "line": 577
2026-06-21T11:53:56.0327490Z             },
2026-06-21T11:53:56.0327566Z             {
2026-06-21T11:53:56.0327682Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.0327766Z               "line": 638
2026-06-21T11:53:56.0327852Z             },
2026-06-21T11:53:56.0327929Z             {
2026-06-21T11:53:56.0328044Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0328129Z               "line": 213
2026-06-21T11:53:56.0328215Z             },
2026-06-21T11:53:56.0328297Z             {
2026-06-21T11:53:56.0328410Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0328496Z               "line": 249
2026-06-21T11:53:56.0328583Z             },
2026-06-21T11:53:56.0328660Z             {
2026-06-21T11:53:56.0328778Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0328869Z               "line": 262
2026-06-21T11:53:56.0329044Z             },
2026-06-21T11:53:56.0329134Z             {
2026-06-21T11:53:56.0329244Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T11:53:56.0329326Z               "line": 338
2026-06-21T11:53:56.0329411Z             },
2026-06-21T11:53:56.0329491Z             {
2026-06-21T11:53:56.0329602Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0329679Z               "line": 690
2026-06-21T11:53:56.0329768Z             },
2026-06-21T11:53:56.0329850Z             {
2026-06-21T11:53:56.0329954Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0330035Z               "line": 8007
2026-06-21T11:53:56.0330126Z             },
2026-06-21T11:53:56.0330203Z             {
2026-06-21T11:53:56.0330307Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0330402Z               "line": 9837
2026-06-21T11:53:56.0330584Z             }
2026-06-21T11:53:56.0330665Z           ]
2026-06-21T11:53:56.0330746Z         }
2026-06-21T11:53:56.0330913Z       }
2026-06-21T11:53:56.0330998Z     },
2026-06-21T11:53:56.0331080Z     {
2026-06-21T11:53:56.0331177Z       "id": "REQ-INST-2",
2026-06-21T11:53:56.0331298Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T11:53:56.0331398Z       "requiredStages": [
2026-06-21T11:53:56.0331479Z         "impl",
2026-06-21T11:53:56.0331559Z         "unit"
2026-06-21T11:53:56.0331634Z       ],
2026-06-21T11:53:56.0331719Z       "stages": {
2026-06-21T11:53:56.0331806Z         "doc": {
2026-06-21T11:53:56.0331893Z           "complete": false,
2026-06-21T11:53:56.0331987Z           "evidence": []
2026-06-21T11:53:56.0332068Z         },
2026-06-21T11:53:56.0332159Z         "impl": {
2026-06-21T11:53:56.0332249Z           "complete": true,
2026-06-21T11:53:56.0332344Z           "evidence": [
2026-06-21T11:53:56.0332421Z             {
2026-06-21T11:53:56.0332550Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0332645Z               "line": 108
2026-06-21T11:53:56.0332731Z             },
2026-06-21T11:53:56.0332812Z             {
2026-06-21T11:53:56.0332926Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:56.0333007Z               "line": 28
2026-06-21T11:53:56.0333094Z             },
2026-06-21T11:53:56.0333174Z             {
2026-06-21T11:53:56.0333284Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:56.0333366Z               "line": 74
2026-06-21T11:53:56.0333447Z             },
2026-06-21T11:53:56.0333527Z             {
2026-06-21T11:53:56.0333646Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:56.0333762Z               "line": 96
2026-06-21T11:53:56.0333841Z             },
2026-06-21T11:53:56.0333928Z             {
2026-06-21T11:53:56.0334034Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:56.0334124Z               "line": 86
2026-06-21T11:53:56.0334218Z             },
2026-06-21T11:53:56.0334303Z             {
2026-06-21T11:53:56.0334408Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T11:53:56.0334506Z               "line": 118
2026-06-21T11:53:56.0334591Z             }
2026-06-21T11:53:56.0334673Z           ]
2026-06-21T11:53:56.0334750Z         },
2026-06-21T11:53:56.0334835Z         "int": {
2026-06-21T11:53:56.0334915Z           "complete": false,
2026-06-21T11:53:56.0335012Z           "evidence": []
2026-06-21T11:53:56.0335098Z         },
2026-06-21T11:53:56.0335183Z         "unit": {
2026-06-21T11:53:56.0335274Z           "complete": true,
2026-06-21T11:53:56.0335365Z           "evidence": [
2026-06-21T11:53:56.0335451Z             {
2026-06-21T11:53:56.0335564Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T11:53:56.0335651Z               "line": 250
2026-06-21T11:53:56.0335732Z             },
2026-06-21T11:53:56.0335813Z             {
2026-06-21T11:53:56.0335927Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:56.0336023Z               "line": 280
2026-06-21T11:53:56.0336108Z             }
2026-06-21T11:53:56.0336199Z           ]
2026-06-21T11:53:56.0336281Z         }
2026-06-21T11:53:56.0336366Z       }
2026-06-21T11:53:56.0336451Z     },
2026-06-21T11:53:56.0336533Z     {
2026-06-21T11:53:56.0336624Z       "id": "REQ-INST-3",
2026-06-21T11:53:56.0336775Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T11:53:56.0336865Z       "requiredStages": [
2026-06-21T11:53:56.0336946Z         "doc",
2026-06-21T11:53:56.0337031Z         "impl",
2026-06-21T11:53:56.0337106Z         "unit"
2026-06-21T11:53:56.0337187Z       ],
2026-06-21T11:53:56.0337263Z       "stages": {
2026-06-21T11:53:56.0337346Z         "doc": {
2026-06-21T11:53:56.0337430Z           "complete": true,
2026-06-21T11:53:56.0337521Z           "evidence": [
2026-06-21T11:53:56.0337608Z             {
2026-06-21T11:53:56.0337712Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T11:53:56.0337870Z               "line": 3
2026-06-21T11:53:56.0337951Z             }
2026-06-21T11:53:56.0338037Z           ]
2026-06-21T11:53:56.0338175Z         },
2026-06-21T11:53:56.0338265Z         "impl": {
2026-06-21T11:53:56.0338346Z           "complete": true,
2026-06-21T11:53:56.0338427Z           "evidence": [
2026-06-21T11:53:56.0338504Z             {
2026-06-21T11:53:56.0338623Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:56.0338708Z               "line": 60
2026-06-21T11:53:56.0338794Z             },
2026-06-21T11:53:56.0338871Z             {
2026-06-21T11:53:56.0339075Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0339162Z               "line": 480
2026-06-21T11:53:56.0339243Z             },
2026-06-21T11:53:56.0339328Z             {
2026-06-21T11:53:56.0339444Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0339530Z               "line": 254
2026-06-21T11:53:56.0339609Z             },
2026-06-21T11:53:56.0339690Z             {
2026-06-21T11:53:56.0339814Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0339906Z               "line": 384
2026-06-21T11:53:56.0339989Z             },
2026-06-21T11:53:56.0340075Z             {
2026-06-21T11:53:56.0340195Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0340281Z               "line": 418
2026-06-21T11:53:56.0340362Z             },
2026-06-21T11:53:56.0340444Z             {
2026-06-21T11:53:56.0340558Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T11:53:56.0340643Z               "line": 74
2026-06-21T11:53:56.0340724Z             },
2026-06-21T11:53:56.0340806Z             {
2026-06-21T11:53:56.0340934Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0341010Z               "line": 234
2026-06-21T11:53:56.0341093Z             },
2026-06-21T11:53:56.0341172Z             {
2026-06-21T11:53:56.0341301Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0341402Z               "line": 396
2026-06-21T11:53:56.0341487Z             },
2026-06-21T11:53:56.0341573Z             {
2026-06-21T11:53:56.0341688Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0341774Z               "line": 45
2026-06-21T11:53:56.0341863Z             },
2026-06-21T11:53:56.0341953Z             {
2026-06-21T11:53:56.0342063Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0342147Z               "line": 114
2026-06-21T11:53:56.0342233Z             },
2026-06-21T11:53:56.0342318Z             {
2026-06-21T11:53:56.0342438Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0342528Z               "line": 152
2026-06-21T11:53:56.0342618Z             },
2026-06-21T11:53:56.0342700Z             {
2026-06-21T11:53:56.0342810Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0342905Z               "line": 168
2026-06-21T11:53:56.0342991Z             },
2026-06-21T11:53:56.0343072Z             {
2026-06-21T11:53:56.0343195Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0343277Z               "line": 178
2026-06-21T11:53:56.0343363Z             },
2026-06-21T11:53:56.0343444Z             {
2026-06-21T11:53:56.0343562Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0343645Z               "line": 210
2026-06-21T11:53:56.0343729Z             },
2026-06-21T11:53:56.0343810Z             {
2026-06-21T11:53:56.0343916Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0344007Z               "line": 287
2026-06-21T11:53:56.0344092Z             },
2026-06-21T11:53:56.0344168Z             {
2026-06-21T11:53:56.0344279Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0344364Z               "line": 311
2026-06-21T11:53:56.0344454Z             },
2026-06-21T11:53:56.0344531Z             {
2026-06-21T11:53:56.0344651Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0344825Z               "line": 389
2026-06-21T11:53:56.0344911Z             },
2026-06-21T11:53:56.0345081Z             {
2026-06-21T11:53:56.0345200Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0345286Z               "line": 438
2026-06-21T11:53:56.0345367Z             },
2026-06-21T11:53:56.0345452Z             {
2026-06-21T11:53:56.0345563Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T11:53:56.0345653Z               "line": 37
2026-06-21T11:53:56.0345743Z             },
2026-06-21T11:53:56.0345829Z             {
2026-06-21T11:53:56.0345953Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0346048Z               "line": 62
2026-06-21T11:53:56.0346134Z             },
2026-06-21T11:53:56.0346216Z             {
2026-06-21T11:53:56.0346330Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0346416Z               "line": 279
2026-06-21T11:53:56.0346512Z             },
2026-06-21T11:53:56.0346597Z             {
2026-06-21T11:53:56.0346697Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0346798Z               "line": 1848
2026-06-21T11:53:56.0346879Z             }
2026-06-21T11:53:56.0346964Z           ]
2026-06-21T11:53:56.0347050Z         },
2026-06-21T11:53:56.0347137Z         "int": {
2026-06-21T11:53:56.0347237Z           "complete": false,
2026-06-21T11:53:56.0347321Z           "evidence": []
2026-06-21T11:53:56.0347406Z         },
2026-06-21T11:53:56.0347492Z         "unit": {
2026-06-21T11:53:56.0347586Z           "complete": true,
2026-06-21T11:53:56.0347671Z           "evidence": [
2026-06-21T11:53:56.0347756Z             {
2026-06-21T11:53:56.0347881Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:56.0347967Z               "line": 360
2026-06-21T11:53:56.0348042Z             },
2026-06-21T11:53:56.0348129Z             {
2026-06-21T11:53:56.0348249Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0348352Z               "line": 837
2026-06-21T11:53:56.0348435Z             },
2026-06-21T11:53:56.0348535Z             {
2026-06-21T11:53:56.0348648Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0348745Z               "line": 894
2026-06-21T11:53:56.0348821Z             },
2026-06-21T11:53:56.0348906Z             {
2026-06-21T11:53:56.0349107Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0349202Z               "line": 889
2026-06-21T11:53:56.0349287Z             },
2026-06-21T11:53:56.0349369Z             {
2026-06-21T11:53:56.0349488Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0349579Z               "line": 1014
2026-06-21T11:53:56.0349665Z             },
2026-06-21T11:53:56.0349746Z             {
2026-06-21T11:53:56.0349878Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0349980Z               "line": 1264
2026-06-21T11:53:56.0350080Z             },
2026-06-21T11:53:56.0350160Z             {
2026-06-21T11:53:56.0350278Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0350383Z               "line": 1405
2026-06-21T11:53:56.0350470Z             },
2026-06-21T11:53:56.0350545Z             {
2026-06-21T11:53:56.0350665Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0350751Z               "line": 449
2026-06-21T11:53:56.0350841Z             },
2026-06-21T11:53:56.0350926Z             {
2026-06-21T11:53:56.0351037Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0351133Z               "line": 485
2026-06-21T11:53:56.0351212Z             },
2026-06-21T11:53:56.0351309Z             {
2026-06-21T11:53:56.0351413Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0351499Z               "line": 540
2026-06-21T11:53:56.0351585Z             },
2026-06-21T11:53:56.0351672Z             {
2026-06-21T11:53:56.0351790Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0351982Z               "line": 697
2026-06-21T11:53:56.0352171Z             },
2026-06-21T11:53:56.0352248Z             {
2026-06-21T11:53:56.0352363Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0352447Z               "line": 931
2026-06-21T11:53:56.0352537Z             },
2026-06-21T11:53:56.0352623Z             {
2026-06-21T11:53:56.0352736Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0352817Z               "line": 945
2026-06-21T11:53:56.0352902Z             },
2026-06-21T11:53:56.0352989Z             {
2026-06-21T11:53:56.0353107Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0353198Z               "line": 1290
2026-06-21T11:53:56.0353284Z             },
2026-06-21T11:53:56.0353365Z             {
2026-06-21T11:53:56.0353474Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0353556Z               "line": 609
2026-06-21T11:53:56.0353646Z             },
2026-06-21T11:53:56.0353731Z             {
2026-06-21T11:53:56.0353832Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0353928Z               "line": 8031
2026-06-21T11:53:56.0354014Z             }
2026-06-21T11:53:56.0354099Z           ]
2026-06-21T11:53:56.0354185Z         }
2026-06-21T11:53:56.0354266Z       }
2026-06-21T11:53:56.0354343Z     },
2026-06-21T11:53:56.0354423Z     {
2026-06-21T11:53:56.0354515Z       "id": "REQ-INST-4",
2026-06-21T11:53:56.0354685Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T11:53:56.0354776Z       "requiredStages": [
2026-06-21T11:53:56.0354864Z         "impl",
2026-06-21T11:53:56.0354957Z         "unit"
2026-06-21T11:53:56.0355034Z       ],
2026-06-21T11:53:56.0355121Z       "stages": {
2026-06-21T11:53:56.0355211Z         "doc": {
2026-06-21T11:53:56.0355300Z           "complete": false,
2026-06-21T11:53:56.0355394Z           "evidence": []
2026-06-21T11:53:56.0355476Z         },
2026-06-21T11:53:56.0355575Z         "impl": {
2026-06-21T11:53:56.0355665Z           "complete": true,
2026-06-21T11:53:56.0355750Z           "evidence": [
2026-06-21T11:53:56.0355841Z             {
2026-06-21T11:53:56.0355960Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0356055Z               "line": 385
2026-06-21T11:53:56.0356138Z             },
2026-06-21T11:53:56.0356228Z             {
2026-06-21T11:53:56.0356346Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0356438Z               "line": 202
2026-06-21T11:53:56.0356528Z             },
2026-06-21T11:53:56.0356608Z             {
2026-06-21T11:53:56.0356728Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0356814Z               "line": 234
2026-06-21T11:53:56.0356904Z             },
2026-06-21T11:53:56.0356990Z             {
2026-06-21T11:53:56.0357101Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0357190Z               "line": 274
2026-06-21T11:53:56.0357266Z             }
2026-06-21T11:53:56.0357348Z           ]
2026-06-21T11:53:56.0357444Z         },
2026-06-21T11:53:56.0357524Z         "int": {
2026-06-21T11:53:56.0357620Z           "complete": false,
2026-06-21T11:53:56.0357702Z           "evidence": []
2026-06-21T11:53:56.0357787Z         },
2026-06-21T11:53:56.0357872Z         "unit": {
2026-06-21T11:53:56.0357976Z           "complete": true,
2026-06-21T11:53:56.0358053Z           "evidence": [
2026-06-21T11:53:56.0358142Z             {
2026-06-21T11:53:56.0358264Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0358346Z               "line": 889
2026-06-21T11:53:56.0358428Z             },
2026-06-21T11:53:56.0358508Z             {
2026-06-21T11:53:56.0358627Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0358713Z               "line": 561
2026-06-21T11:53:56.0358799Z             },
2026-06-21T11:53:56.0358884Z             {
2026-06-21T11:53:56.0359161Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0359246Z               "line": 668
2026-06-21T11:53:56.0359405Z             },
2026-06-21T11:53:56.0359490Z             {
2026-06-21T11:53:56.0359604Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0359700Z               "line": 750
2026-06-21T11:53:56.0359781Z             }
2026-06-21T11:53:56.0359866Z           ]
2026-06-21T11:53:56.0359954Z         }
2026-06-21T11:53:56.0360034Z       }
2026-06-21T11:53:56.0360119Z     },
2026-06-21T11:53:56.0360205Z     {
2026-06-21T11:53:56.0360297Z       "id": "REQ-INST-5",
2026-06-21T11:53:56.0360473Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T11:53:56.0360564Z       "requiredStages": [
2026-06-21T11:53:56.0360650Z         "impl",
2026-06-21T11:53:56.0360725Z         "unit",
2026-06-21T11:53:56.0360819Z         "int"
2026-06-21T11:53:56.0360905Z       ],
2026-06-21T11:53:56.0360987Z       "stages": {
2026-06-21T11:53:56.0361072Z         "doc": {
2026-06-21T11:53:56.0361186Z           "complete": false,
2026-06-21T11:53:56.0361283Z           "evidence": []
2026-06-21T11:53:56.0361369Z         },
2026-06-21T11:53:56.0361453Z         "impl": {
2026-06-21T11:53:56.0361535Z           "complete": true,
2026-06-21T11:53:56.0361635Z           "evidence": [
2026-06-21T11:53:56.0361707Z             {
2026-06-21T11:53:56.0361821Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T11:53:56.0361907Z               "line": 85
2026-06-21T11:53:56.0361992Z             },
2026-06-21T11:53:56.0362078Z             {
2026-06-21T11:53:56.0362189Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0362275Z               "line": 68
2026-06-21T11:53:56.0362365Z             },
2026-06-21T11:53:56.0362450Z             {
2026-06-21T11:53:56.0362566Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0362641Z               "line": 99
2026-06-21T11:53:56.0362731Z             },
2026-06-21T11:53:56.0362813Z             {
2026-06-21T11:53:56.0362928Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0363031Z               "line": 183
2026-06-21T11:53:56.0363116Z             },
2026-06-21T11:53:56.0363202Z             {
2026-06-21T11:53:56.0363310Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0363400Z               "line": 314
2026-06-21T11:53:56.0363486Z             }
2026-06-21T11:53:56.0363568Z           ]
2026-06-21T11:53:56.0363653Z         },
2026-06-21T11:53:56.0363734Z         "int": {
2026-06-21T11:53:56.0363830Z           "complete": true,
2026-06-21T11:53:56.0363911Z           "evidence": [
2026-06-21T11:53:56.0364001Z             {
2026-06-21T11:53:56.0364126Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0364221Z               "line": 156
2026-06-21T11:53:56.0364310Z             },
2026-06-21T11:53:56.0364397Z             {
2026-06-21T11:53:56.0364521Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T11:53:56.0364616Z               "line": 145
2026-06-21T11:53:56.0364697Z             },
2026-06-21T11:53:56.0364784Z             {
2026-06-21T11:53:56.0364903Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0364993Z               "line": 707
2026-06-21T11:53:56.0365065Z             },
2026-06-21T11:53:56.0365151Z             {
2026-06-21T11:53:56.0365260Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0365351Z               "line": 1069
2026-06-21T11:53:56.0365438Z             }
2026-06-21T11:53:56.0365521Z           ]
2026-06-21T11:53:56.0365598Z         },
2026-06-21T11:53:56.0365686Z         "unit": {
2026-06-21T11:53:56.0365776Z           "complete": true,
2026-06-21T11:53:56.0365865Z           "evidence": [
2026-06-21T11:53:56.0365955Z             {
2026-06-21T11:53:56.0366070Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0366163Z               "line": 552
2026-06-21T11:53:56.0366344Z             },
2026-06-21T11:53:56.0366425Z             {
2026-06-21T11:53:56.0366539Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0366693Z               "line": 595
2026-06-21T11:53:56.0366788Z             },
2026-06-21T11:53:56.0366877Z             {
2026-06-21T11:53:56.0366993Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T11:53:56.0367083Z               "line": 219
2026-06-21T11:53:56.0367164Z             }
2026-06-21T11:53:56.0367244Z           ]
2026-06-21T11:53:56.0367332Z         }
2026-06-21T11:53:56.0367416Z       }
2026-06-21T11:53:56.0367497Z     },
2026-06-21T11:53:56.0367578Z     {
2026-06-21T11:53:56.0367671Z       "id": "REQ-INST-6",
2026-06-21T11:53:56.0367841Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T11:53:56.0367942Z       "requiredStages": [
2026-06-21T11:53:56.0368018Z         "impl",
2026-06-21T11:53:56.0368108Z         "unit",
2026-06-21T11:53:56.0368189Z         "int"
2026-06-21T11:53:56.0368271Z       ],
2026-06-21T11:53:56.0368366Z       "stages": {
2026-06-21T11:53:56.0368446Z         "doc": {
2026-06-21T11:53:56.0368545Z           "complete": true,
2026-06-21T11:53:56.0368622Z           "evidence": [
2026-06-21T11:53:56.0368706Z             {
2026-06-21T11:53:56.0368810Z               "path": "docs/DEFERRED.md",
2026-06-21T11:53:56.0368896Z               "line": 13
2026-06-21T11:53:56.0369054Z             }
2026-06-21T11:53:56.0369139Z           ]
2026-06-21T11:53:56.0369225Z         },
2026-06-21T11:53:56.0369307Z         "impl": {
2026-06-21T11:53:56.0369406Z           "complete": true,
2026-06-21T11:53:56.0369487Z           "evidence": [
2026-06-21T11:53:56.0369570Z             {
2026-06-21T11:53:56.0369693Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0369778Z               "line": 391
2026-06-21T11:53:56.0369860Z             },
2026-06-21T11:53:56.0369941Z             {
2026-06-21T11:53:56.0370064Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T11:53:56.0370165Z               "line": 27
2026-06-21T11:53:56.0370246Z             },
2026-06-21T11:53:56.0370332Z             {
2026-06-21T11:53:56.0370446Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T11:53:56.0370538Z               "line": 73
2026-06-21T11:53:56.0370617Z             },
2026-06-21T11:53:56.0370699Z             {
2026-06-21T11:53:56.0370819Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T11:53:56.0370909Z               "line": 182
2026-06-21T11:53:56.0370989Z             },
2026-06-21T11:53:56.0371070Z             {
2026-06-21T11:53:56.0371195Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0371275Z               "line": 426
2026-06-21T11:53:56.0371355Z             },
2026-06-21T11:53:56.0371441Z             {
2026-06-21T11:53:56.0371557Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T11:53:56.0371647Z               "line": 31
2026-06-21T11:53:56.0371732Z             },
2026-06-21T11:53:56.0371823Z             {
2026-06-21T11:53:56.0371938Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.0372037Z               "line": 202
2026-06-21T11:53:56.0372119Z             },
2026-06-21T11:53:56.0372205Z             {
2026-06-21T11:53:56.0372314Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:56.0372404Z               "line": 83
2026-06-21T11:53:56.0372496Z             },
2026-06-21T11:53:56.0372566Z             {
2026-06-21T11:53:56.0372676Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0372763Z               "line": 1849
2026-06-21T11:53:56.0372849Z             },
2026-06-21T11:53:56.0372934Z             {
2026-06-21T11:53:56.0373034Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0373121Z               "line": 179
2026-06-21T11:53:56.0373206Z             },
2026-06-21T11:53:56.0373287Z             {
2026-06-21T11:53:56.0375806Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0376068Z               "line": 215
2026-06-21T11:53:56.0376158Z             }
2026-06-21T11:53:56.0376341Z           ]
2026-06-21T11:53:56.0376430Z         },
2026-06-21T11:53:56.0376515Z         "int": {
2026-06-21T11:53:56.0376606Z           "complete": true,
2026-06-21T11:53:56.0376696Z           "evidence": [
2026-06-21T11:53:56.0376775Z             {
2026-06-21T11:53:56.0376909Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0376995Z               "line": 721
2026-06-21T11:53:56.0377080Z             },
2026-06-21T11:53:56.0377161Z             {
2026-06-21T11:53:56.0377277Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0377367Z               "line": 1114
2026-06-21T11:53:56.0377452Z             },
2026-06-21T11:53:56.0377539Z             {
2026-06-21T11:53:56.0377648Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0377728Z               "line": 726
2026-06-21T11:53:56.0377814Z             }
2026-06-21T11:53:56.0377901Z           ]
2026-06-21T11:53:56.0377986Z         },
2026-06-21T11:53:56.0378072Z         "unit": {
2026-06-21T11:53:56.0378163Z           "complete": true,
2026-06-21T11:53:56.0378250Z           "evidence": [
2026-06-21T11:53:56.0378334Z             {
2026-06-21T11:53:56.0378458Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0378541Z               "line": 661
2026-06-21T11:53:56.0378620Z             },
2026-06-21T11:53:56.0378701Z             {
2026-06-21T11:53:56.0378831Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.0378912Z               "line": 899
2026-06-21T11:53:56.0379086Z             },
2026-06-21T11:53:56.0379163Z             {
2026-06-21T11:53:56.0379285Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T11:53:56.0379389Z               "line": 66
2026-06-21T11:53:56.0379475Z             },
2026-06-21T11:53:56.0379552Z             {
2026-06-21T11:53:56.0379666Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.0379766Z               "line": 297
2026-06-21T11:53:56.0379848Z             },
2026-06-21T11:53:56.0379938Z             {
2026-06-21T11:53:56.0380047Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:56.0380135Z               "line": 203
2026-06-21T11:53:56.0380215Z             }
2026-06-21T11:53:56.0380295Z           ]
2026-06-21T11:53:56.0380381Z         }
2026-06-21T11:53:56.0380468Z       }
2026-06-21T11:53:56.0380548Z     },
2026-06-21T11:53:56.0380629Z     {
2026-06-21T11:53:56.0380720Z       "id": "REQ-INST-7",
2026-06-21T11:53:56.0380863Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T11:53:56.0380949Z       "requiredStages": [
2026-06-21T11:53:56.0381040Z         "impl",
2026-06-21T11:53:56.0381121Z         "unit",
2026-06-21T11:53:56.0381206Z         "int"
2026-06-21T11:53:56.0381292Z       ],
2026-06-21T11:53:56.0381374Z       "stages": {
2026-06-21T11:53:56.0381455Z         "doc": {
2026-06-21T11:53:56.0381559Z           "complete": false,
2026-06-21T11:53:56.0381650Z           "evidence": []
2026-06-21T11:53:56.0381728Z         },
2026-06-21T11:53:56.0381817Z         "impl": {
2026-06-21T11:53:56.0381902Z           "complete": true,
2026-06-21T11:53:56.0381987Z           "evidence": [
2026-06-21T11:53:56.0382073Z             {
2026-06-21T11:53:56.0382202Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0382282Z               "line": 436
2026-06-21T11:53:56.0382360Z             },
2026-06-21T11:53:56.0382441Z             {
2026-06-21T11:53:56.0382569Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0382655Z               "line": 27
2026-06-21T11:53:56.0382741Z             },
2026-06-21T11:53:56.0382818Z             {
2026-06-21T11:53:56.0382941Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0383023Z               "line": 207
2026-06-21T11:53:56.0383108Z             },
2026-06-21T11:53:56.0383193Z             {
2026-06-21T11:53:56.0383432Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0383518Z               "line": 344
2026-06-21T11:53:56.0383686Z             },
2026-06-21T11:53:56.0383775Z             {
2026-06-21T11:53:56.0383890Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T11:53:56.0383981Z               "line": 59
2026-06-21T11:53:56.0384061Z             },
2026-06-21T11:53:56.0384136Z             {
2026-06-21T11:53:56.0384251Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0384337Z               "line": 41
2026-06-21T11:53:56.0384426Z             },
2026-06-21T11:53:56.0384511Z             {
2026-06-21T11:53:56.0384630Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.0384722Z               "line": 27
2026-06-21T11:53:56.0384796Z             },
2026-06-21T11:53:56.0384873Z             {
2026-06-21T11:53:56.0384998Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.0385093Z               "line": 119
2026-06-21T11:53:56.0385178Z             },
2026-06-21T11:53:56.0385260Z             {
2026-06-21T11:53:56.0385384Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.0385474Z               "line": 134
2026-06-21T11:53:56.0385556Z             },
2026-06-21T11:53:56.0385627Z             {
2026-06-21T11:53:56.0385751Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T11:53:56.0385836Z               "line": 139
2026-06-21T11:53:56.0385923Z             }
2026-06-21T11:53:56.0386008Z           ]
2026-06-21T11:53:56.0386089Z         },
2026-06-21T11:53:56.0386176Z         "int": {
2026-06-21T11:53:56.0386267Z           "complete": true,
2026-06-21T11:53:56.0386356Z           "evidence": [
2026-06-21T11:53:56.0386442Z             {
2026-06-21T11:53:56.0386553Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T11:53:56.0386642Z               "line": 145
2026-06-21T11:53:56.0386723Z             },
2026-06-21T11:53:56.0386806Z             {
2026-06-21T11:53:56.0386929Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0387013Z               "line": 665
2026-06-21T11:53:56.0387098Z             },
2026-06-21T11:53:56.0387180Z             {
2026-06-21T11:53:56.0387302Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0387387Z               "line": 964
2026-06-21T11:53:56.0387474Z             }
2026-06-21T11:53:56.0387560Z           ]
2026-06-21T11:53:56.0387645Z         },
2026-06-21T11:53:56.0387735Z         "unit": {
2026-06-21T11:53:56.0387818Z           "complete": true,
2026-06-21T11:53:56.0387913Z           "evidence": [
2026-06-21T11:53:56.0387988Z             {
2026-06-21T11:53:56.0388104Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0388189Z               "line": 1134
2026-06-21T11:53:56.0388280Z             },
2026-06-21T11:53:56.0388365Z             {
2026-06-21T11:53:56.0388485Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0388585Z               "line": 1521
2026-06-21T11:53:56.0388670Z             },
2026-06-21T11:53:56.0388757Z             {
2026-06-21T11:53:56.0388889Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T11:53:56.0389062Z               "line": 84
2026-06-21T11:53:56.0389153Z             },
2026-06-21T11:53:56.0389223Z             {
2026-06-21T11:53:56.0389338Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0389420Z               "line": 812
2026-06-21T11:53:56.0389505Z             },
2026-06-21T11:53:56.0389585Z             {
2026-06-21T11:53:56.0389699Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0389789Z               "line": 823
2026-06-21T11:53:56.0389868Z             },
2026-06-21T11:53:56.0389954Z             {
2026-06-21T11:53:56.0390064Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0390160Z               "line": 838
2026-06-21T11:53:56.0390350Z             },
2026-06-21T11:53:56.0390432Z             {
2026-06-21T11:53:56.0390550Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.0390723Z               "line": 166
2026-06-21T11:53:56.0390804Z             },
2026-06-21T11:53:56.0390884Z             {
2026-06-21T11:53:56.0391009Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.0391089Z               "line": 181
2026-06-21T11:53:56.0391170Z             },
2026-06-21T11:53:56.0391251Z             {
2026-06-21T11:53:56.0391371Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.0391452Z               "line": 214
2026-06-21T11:53:56.0391542Z             }
2026-06-21T11:53:56.0391619Z           ]
2026-06-21T11:53:56.0391709Z         }
2026-06-21T11:53:56.0391790Z       }
2026-06-21T11:53:56.0391881Z     },
2026-06-21T11:53:56.0391958Z     {
2026-06-21T11:53:56.0392038Z       "id": "REQ-INST-8",
2026-06-21T11:53:56.0392186Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T11:53:56.0392288Z       "requiredStages": [
2026-06-21T11:53:56.0392381Z         "impl",
2026-06-21T11:53:56.0392462Z         "unit",
2026-06-21T11:53:56.0392552Z         "int"
2026-06-21T11:53:56.0392638Z       ],
2026-06-21T11:53:56.0392729Z       "stages": {
2026-06-21T11:53:56.0392805Z         "doc": {
2026-06-21T11:53:56.0392890Z           "complete": false,
2026-06-21T11:53:56.0392977Z           "evidence": []
2026-06-21T11:53:56.0393063Z         },
2026-06-21T11:53:56.0393143Z         "impl": {
2026-06-21T11:53:56.0393225Z           "complete": true,
2026-06-21T11:53:56.0393311Z           "evidence": [
2026-06-21T11:53:56.0393392Z             {
2026-06-21T11:53:56.0393506Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:56.0393592Z               "line": 113
2026-06-21T11:53:56.0393673Z             },
2026-06-21T11:53:56.0393758Z             {
2026-06-21T11:53:56.0393869Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:56.0393959Z               "line": 386
2026-06-21T11:53:56.0394045Z             },
2026-06-21T11:53:56.0394135Z             {
2026-06-21T11:53:56.0394255Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:56.0394335Z               "line": 426
2026-06-21T11:53:56.0394421Z             },
2026-06-21T11:53:56.0394503Z             {
2026-06-21T11:53:56.0394617Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0394701Z               "line": 62
2026-06-21T11:53:56.0394782Z             }
2026-06-21T11:53:56.0394864Z           ]
2026-06-21T11:53:56.0394939Z         },
2026-06-21T11:53:56.0395023Z         "int": {
2026-06-21T11:53:56.0395104Z           "complete": true,
2026-06-21T11:53:56.0395190Z           "evidence": [
2026-06-21T11:53:56.0395268Z             {
2026-06-21T11:53:56.0395395Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0395487Z               "line": 415
2026-06-21T11:53:56.0395568Z             },
2026-06-21T11:53:56.0395662Z             {
2026-06-21T11:53:56.0395777Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0395873Z               "line": 1028
2026-06-21T11:53:56.0395958Z             }
2026-06-21T11:53:56.0396043Z           ]
2026-06-21T11:53:56.0396130Z         },
2026-06-21T11:53:56.0396216Z         "unit": {
2026-06-21T11:53:56.0396306Z           "complete": true,
2026-06-21T11:53:56.0396397Z           "evidence": [
2026-06-21T11:53:56.0396478Z             {
2026-06-21T11:53:56.0396597Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0396692Z               "line": 366
2026-06-21T11:53:56.0396774Z             },
2026-06-21T11:53:56.0396859Z             {
2026-06-21T11:53:56.0396973Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0397061Z               "line": 633
2026-06-21T11:53:56.0397151Z             },
2026-06-21T11:53:56.0397230Z             {
2026-06-21T11:53:56.0397351Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0397517Z               "line": 116
2026-06-21T11:53:56.0397597Z             },
2026-06-21T11:53:56.0397754Z             {
2026-06-21T11:53:56.0397862Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0397952Z               "line": 160
2026-06-21T11:53:56.0398034Z             }
2026-06-21T11:53:56.0398120Z           ]
2026-06-21T11:53:56.0398201Z         }
2026-06-21T11:53:56.0398281Z       }
2026-06-21T11:53:56.0398368Z     },
2026-06-21T11:53:56.0398439Z     {
2026-06-21T11:53:56.0398525Z       "id": "REQ-INST-9",
2026-06-21T11:53:56.0398707Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T11:53:56.0398797Z       "requiredStages": [
2026-06-21T11:53:56.0398877Z         "impl",
2026-06-21T11:53:56.0399041Z         "unit"
2026-06-21T11:53:56.0399120Z       ],
2026-06-21T11:53:56.0399225Z       "stages": {
2026-06-21T11:53:56.0399336Z         "doc": {
2026-06-21T11:53:56.0399440Z           "complete": false,
2026-06-21T11:53:56.0399530Z           "evidence": []
2026-06-21T11:53:56.0399613Z         },
2026-06-21T11:53:56.0399704Z         "impl": {
2026-06-21T11:53:56.0399797Z           "complete": true,
2026-06-21T11:53:56.0399884Z           "evidence": [
2026-06-21T11:53:56.0399966Z             {
2026-06-21T11:53:56.0400084Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0400164Z               "line": 449
2026-06-21T11:53:56.0400245Z             }
2026-06-21T11:53:56.0400326Z           ]
2026-06-21T11:53:56.0400410Z         },
2026-06-21T11:53:56.0400490Z         "int": {
2026-06-21T11:53:56.0400581Z           "complete": false,
2026-06-21T11:53:56.0400663Z           "evidence": []
2026-06-21T11:53:56.0400748Z         },
2026-06-21T11:53:56.0400829Z         "unit": {
2026-06-21T11:53:56.0400915Z           "complete": true,
2026-06-21T11:53:56.0401006Z           "evidence": [
2026-06-21T11:53:56.0401086Z             {
2026-06-21T11:53:56.0401196Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0401297Z               "line": 1397
2026-06-21T11:53:56.0401383Z             },
2026-06-21T11:53:56.0401463Z             {
2026-06-21T11:53:56.0401579Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0401659Z               "line": 1406
2026-06-21T11:53:56.0401740Z             },
2026-06-21T11:53:56.0401825Z             {
2026-06-21T11:53:56.0401946Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0402027Z               "line": 1422
2026-06-21T11:53:56.0402107Z             },
2026-06-21T11:53:56.0402184Z             {
2026-06-21T11:53:56.0402293Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0402379Z               "line": 1434
2026-06-21T11:53:56.0402465Z             },
2026-06-21T11:53:56.0402557Z             {
2026-06-21T11:53:56.0402669Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0402761Z               "line": 1454
2026-06-21T11:53:56.0402843Z             }
2026-06-21T11:53:56.0402927Z           ]
2026-06-21T11:53:56.0403012Z         }
2026-06-21T11:53:56.0403092Z       }
2026-06-21T11:53:56.0403179Z     },
2026-06-21T11:53:56.0403261Z     {
2026-06-21T11:53:56.0403360Z       "id": "REQ-INSTALL-1",
2026-06-21T11:53:56.0403552Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T11:53:56.0403651Z       "requiredStages": [
2026-06-21T11:53:56.0403722Z         "doc",
2026-06-21T11:53:56.0403805Z         "impl",
2026-06-21T11:53:56.0403885Z         "int"
2026-06-21T11:53:56.0403966Z       ],
2026-06-21T11:53:56.0404056Z       "stages": {
2026-06-21T11:53:56.0404139Z         "doc": {
2026-06-21T11:53:56.0404233Z           "complete": true,
2026-06-21T11:53:56.0404313Z           "evidence": [
2026-06-21T11:53:56.0404400Z             {
2026-06-21T11:53:56.0404500Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0404590Z               "line": 754
2026-06-21T11:53:56.0404768Z             }
2026-06-21T11:53:56.0404853Z           ]
2026-06-21T11:53:56.0404928Z         },
2026-06-21T11:53:56.0405093Z         "impl": {
2026-06-21T11:53:56.0405186Z           "complete": true,
2026-06-21T11:53:56.0405266Z           "evidence": [
2026-06-21T11:53:56.0405352Z             {
2026-06-21T11:53:56.0405457Z               "path": "installer/install.ps1",
2026-06-21T11:53:56.0405550Z               "line": 57
2026-06-21T11:53:56.0405635Z             },
2026-06-21T11:53:56.0405717Z             {
2026-06-21T11:53:56.0405828Z               "path": "installer/install.sh",
2026-06-21T11:53:56.0405917Z               "line": 52
2026-06-21T11:53:56.0405998Z             }
2026-06-21T11:53:56.0406085Z           ]
2026-06-21T11:53:56.0406166Z         },
2026-06-21T11:53:56.0406255Z         "int": {
2026-06-21T11:53:56.0406347Z           "complete": true,
2026-06-21T11:53:56.0406428Z           "evidence": [
2026-06-21T11:53:56.0406518Z             {
2026-06-21T11:53:56.0406633Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T11:53:56.0406743Z               "line": 21
2026-06-21T11:53:56.0406824Z             }
2026-06-21T11:53:56.0406918Z           ]
2026-06-21T11:53:56.0407006Z         },
2026-06-21T11:53:56.0407095Z         "unit": {
2026-06-21T11:53:56.0407176Z           "complete": false,
2026-06-21T11:53:56.0407262Z           "evidence": []
2026-06-21T11:53:56.0407349Z         }
2026-06-21T11:53:56.0407429Z       }
2026-06-21T11:53:56.0407515Z     },
2026-06-21T11:53:56.0407596Z     {
2026-06-21T11:53:56.0407692Z       "id": "REQ-INSTALL-10",
2026-06-21T11:53:56.0409156Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T11:53:56.0409267Z       "requiredStages": [
2026-06-21T11:53:56.0409352Z         "impl",
2026-06-21T11:53:56.0409442Z         "unit"
2026-06-21T11:53:56.0409523Z       ],
2026-06-21T11:53:56.0409610Z       "stages": {
2026-06-21T11:53:56.0409695Z         "doc": {
2026-06-21T11:53:56.0409790Z           "complete": false,
2026-06-21T11:53:56.0409877Z           "evidence": []
2026-06-21T11:53:56.0409968Z         },
2026-06-21T11:53:56.0410053Z         "impl": {
2026-06-21T11:53:56.0410148Z           "complete": true,
2026-06-21T11:53:56.0410245Z           "evidence": [
2026-06-21T11:53:56.0410324Z             {
2026-06-21T11:53:56.0410439Z               "path": "installer/install.ps1",
2026-06-21T11:53:56.0410526Z               "line": 191
2026-06-21T11:53:56.0410612Z             }
2026-06-21T11:53:56.0410695Z           ]
2026-06-21T11:53:56.0410781Z         },
2026-06-21T11:53:56.0410872Z         "int": {
2026-06-21T11:53:56.0410957Z           "complete": false,
2026-06-21T11:53:56.0411055Z           "evidence": []
2026-06-21T11:53:56.0411137Z         },
2026-06-21T11:53:56.0411232Z         "unit": {
2026-06-21T11:53:56.0411318Z           "complete": true,
2026-06-21T11:53:56.0411417Z           "evidence": [
2026-06-21T11:53:56.0411505Z             {
2026-06-21T11:53:56.0411624Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T11:53:56.0411718Z               "line": 211
2026-06-21T11:53:56.0411800Z             }
2026-06-21T11:53:56.0411885Z           ]
2026-06-21T11:53:56.0411966Z         }
2026-06-21T11:53:56.0412057Z       }
2026-06-21T11:53:56.0412139Z     },
2026-06-21T11:53:56.0412219Z     {
2026-06-21T11:53:56.0412318Z       "id": "REQ-INSTALL-11",
2026-06-21T11:53:56.0414126Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T11:53:56.0414435Z       "requiredStages": [
2026-06-21T11:53:56.0414526Z         "doc",
2026-06-21T11:53:56.0414597Z         "impl",
2026-06-21T11:53:56.0414684Z         "unit"
2026-06-21T11:53:56.0414764Z       ],
2026-06-21T11:53:56.0414855Z       "stages": {
2026-06-21T11:53:56.0414935Z         "doc": {
2026-06-21T11:53:56.0415018Z           "complete": true,
2026-06-21T11:53:56.0415112Z           "evidence": [
2026-06-21T11:53:56.0415198Z             {
2026-06-21T11:53:56.0415294Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0415385Z               "line": 138
2026-06-21T11:53:56.0415465Z             },
2026-06-21T11:53:56.0415551Z             {
2026-06-21T11:53:56.0415658Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.0415741Z               "line": 82
2026-06-21T11:53:56.0415827Z             }
2026-06-21T11:53:56.0415912Z           ]
2026-06-21T11:53:56.0415998Z         },
2026-06-21T11:53:56.0416092Z         "impl": {
2026-06-21T11:53:56.0416181Z           "complete": true,
2026-06-21T11:53:56.0416277Z           "evidence": [
2026-06-21T11:53:56.0416364Z             {
2026-06-21T11:53:56.0416487Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.0416587Z               "line": 223
2026-06-21T11:53:56.0416669Z             },
2026-06-21T11:53:56.0416759Z             {
2026-06-21T11:53:56.0416878Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0416969Z               "line": 99
2026-06-21T11:53:56.0417045Z             },
2026-06-21T11:53:56.0417135Z             {
2026-06-21T11:53:56.0417251Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.0417336Z               "line": 117
2026-06-21T11:53:56.0417440Z             },
2026-06-21T11:53:56.0417531Z             {
2026-06-21T11:53:56.0417660Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T11:53:56.0417741Z               "line": 332
2026-06-21T11:53:56.0417822Z             },
2026-06-21T11:53:56.0417909Z             {
2026-06-21T11:53:56.0418022Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.0418108Z               "line": 88
2026-06-21T11:53:56.0418205Z             },
2026-06-21T11:53:56.0418285Z             {
2026-06-21T11:53:56.0418395Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.0418486Z               "line": 104
2026-06-21T11:53:56.0418567Z             },
2026-06-21T11:53:56.0418647Z             {
2026-06-21T11:53:56.0418770Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0418856Z               "line": 297
2026-06-21T11:53:56.0418931Z             },
2026-06-21T11:53:56.0419096Z             {
2026-06-21T11:53:56.0419212Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0419302Z               "line": 332
2026-06-21T11:53:56.0419387Z             },
2026-06-21T11:53:56.0419474Z             {
2026-06-21T11:53:56.0419593Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0419674Z               "line": 523
2026-06-21T11:53:56.0419759Z             },
2026-06-21T11:53:56.0419841Z             {
2026-06-21T11:53:56.0419960Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0420050Z               "line": 546
2026-06-21T11:53:56.0420146Z             },
2026-06-21T11:53:56.0420236Z             {
2026-06-21T11:53:56.0420350Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0420433Z               "line": 561
2026-06-21T11:53:56.0420514Z             },
2026-06-21T11:53:56.0420603Z             {
2026-06-21T11:53:56.0420704Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.0420795Z               "line": 492
2026-06-21T11:53:56.0420975Z             }
2026-06-21T11:53:56.0421063Z           ]
2026-06-21T11:53:56.0421223Z         },
2026-06-21T11:53:56.0421303Z         "int": {
2026-06-21T11:53:56.0421394Z           "complete": false,
2026-06-21T11:53:56.0421484Z           "evidence": []
2026-06-21T11:53:56.0421573Z         },
2026-06-21T11:53:56.0421663Z         "unit": {
2026-06-21T11:53:56.0421754Z           "complete": true,
2026-06-21T11:53:56.0421846Z           "evidence": [
2026-06-21T11:53:56.0421925Z             {
2026-06-21T11:53:56.0422045Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0422131Z               "line": 799
2026-06-21T11:53:56.0422216Z             },
2026-06-21T11:53:56.0422302Z             {
2026-06-21T11:53:56.0422408Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0422494Z               "line": 811
2026-06-21T11:53:56.0422578Z             },
2026-06-21T11:53:56.0422666Z             {
2026-06-21T11:53:56.0422793Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.0422888Z               "line": 820
2026-06-21T11:53:56.0422980Z             }
2026-06-21T11:53:56.0423066Z           ]
2026-06-21T11:53:56.0423152Z         }
2026-06-21T11:53:56.0423232Z       }
2026-06-21T11:53:56.0423309Z     },
2026-06-21T11:53:56.0423395Z     {
2026-06-21T11:53:56.0423495Z       "id": "REQ-INSTALL-12",
2026-06-21T11:53:56.0426126Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T11:53:56.0426241Z       "requiredStages": [
2026-06-21T11:53:56.0426320Z         "doc",
2026-06-21T11:53:56.0426406Z         "impl",
2026-06-21T11:53:56.0426482Z         "unit",
2026-06-21T11:53:56.0426573Z         "int"
2026-06-21T11:53:56.0426656Z       ],
2026-06-21T11:53:56.0426746Z       "stages": {
2026-06-21T11:53:56.0426837Z         "doc": {
2026-06-21T11:53:56.0426934Z           "complete": true,
2026-06-21T11:53:56.0427023Z           "evidence": [
2026-06-21T11:53:56.0427109Z             {
2026-06-21T11:53:56.0427210Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0427295Z               "line": 185
2026-06-21T11:53:56.0427381Z             }
2026-06-21T11:53:56.0427462Z           ]
2026-06-21T11:53:56.0427548Z         },
2026-06-21T11:53:56.0427629Z         "impl": {
2026-06-21T11:53:56.0427719Z           "complete": true,
2026-06-21T11:53:56.0427821Z           "evidence": [
2026-06-21T11:53:56.0427906Z             {
2026-06-21T11:53:56.0428034Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0428131Z               "line": 27
2026-06-21T11:53:56.0428210Z             },
2026-06-21T11:53:56.0428296Z             {
2026-06-21T11:53:56.0428411Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0428497Z               "line": 223
2026-06-21T11:53:56.0428587Z             },
2026-06-21T11:53:56.0428668Z             {
2026-06-21T11:53:56.0428780Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0428868Z               "line": 5677
2026-06-21T11:53:56.0429032Z             }
2026-06-21T11:53:56.0429108Z           ]
2026-06-21T11:53:56.0429193Z         },
2026-06-21T11:53:56.0429277Z         "int": {
2026-06-21T11:53:56.0429472Z           "complete": true,
2026-06-21T11:53:56.0429562Z           "evidence": [
2026-06-21T11:53:56.0429647Z             {
2026-06-21T11:53:56.0429867Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T11:53:56.0429952Z               "line": 19
2026-06-21T11:53:56.0430034Z             }
2026-06-21T11:53:56.0430115Z           ]
2026-06-21T11:53:56.0430200Z         },
2026-06-21T11:53:56.0430281Z         "unit": {
2026-06-21T11:53:56.0430373Z           "complete": true,
2026-06-21T11:53:56.0430463Z           "evidence": [
2026-06-21T11:53:56.0430543Z             {
2026-06-21T11:53:56.0430668Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0430754Z               "line": 395
2026-06-21T11:53:56.0430830Z             },
2026-06-21T11:53:56.0430920Z             {
2026-06-21T11:53:56.0431040Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0431135Z               "line": 421
2026-06-21T11:53:56.0431220Z             },
2026-06-21T11:53:56.0431318Z             {
2026-06-21T11:53:56.0431426Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0431517Z               "line": 440
2026-06-21T11:53:56.0431598Z             },
2026-06-21T11:53:56.0431684Z             {
2026-06-21T11:53:56.0431797Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0431882Z               "line": 475
2026-06-21T11:53:56.0431959Z             },
2026-06-21T11:53:56.0432044Z             {
2026-06-21T11:53:56.0432152Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0432233Z               "line": 8665
2026-06-21T11:53:56.0432314Z             }
2026-06-21T11:53:56.0432406Z           ]
2026-06-21T11:53:56.0432485Z         }
2026-06-21T11:53:56.0432576Z       }
2026-06-21T11:53:56.0432658Z     },
2026-06-21T11:53:56.0432739Z     {
2026-06-21T11:53:56.0432843Z       "id": "REQ-INSTALL-2",
2026-06-21T11:53:56.0432968Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T11:53:56.0433073Z       "requiredStages": [
2026-06-21T11:53:56.0433157Z         "doc"
2026-06-21T11:53:56.0433245Z       ],
2026-06-21T11:53:56.0433335Z       "stages": {
2026-06-21T11:53:56.0433421Z         "doc": {
2026-06-21T11:53:56.0433520Z           "complete": true,
2026-06-21T11:53:56.0433607Z           "evidence": [
2026-06-21T11:53:56.0433692Z             {
2026-06-21T11:53:56.0433787Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0433884Z               "line": 755
2026-06-21T11:53:56.0433974Z             }
2026-06-21T11:53:56.0434050Z           ]
2026-06-21T11:53:56.0434141Z         },
2026-06-21T11:53:56.0434223Z         "impl": {
2026-06-21T11:53:56.0434321Z           "complete": false,
2026-06-21T11:53:56.0434407Z           "evidence": []
2026-06-21T11:53:56.0434495Z         },
2026-06-21T11:53:56.0434576Z         "int": {
2026-06-21T11:53:56.0434669Z           "complete": false,
2026-06-21T11:53:56.0434759Z           "evidence": []
2026-06-21T11:53:56.0434836Z         },
2026-06-21T11:53:56.0434927Z         "unit": {
2026-06-21T11:53:56.0435007Z           "complete": false,
2026-06-21T11:53:56.0435093Z           "evidence": []
2026-06-21T11:53:56.0435179Z         }
2026-06-21T11:53:56.0435270Z       }
2026-06-21T11:53:56.0435359Z     },
2026-06-21T11:53:56.0435446Z     {
2026-06-21T11:53:56.0435542Z       "id": "REQ-INSTALL-3",
2026-06-21T11:53:56.0435669Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T11:53:56.0435770Z       "requiredStages": [
2026-06-21T11:53:56.0435847Z         "impl",
2026-06-21T11:53:56.0435932Z         "int"
2026-06-21T11:53:56.0436017Z       ],
2026-06-21T11:53:56.0436095Z       "stages": {
2026-06-21T11:53:56.0436181Z         "doc": {
2026-06-21T11:53:56.0436281Z           "complete": false,
2026-06-21T11:53:56.0436371Z           "evidence": []
2026-06-21T11:53:56.0436458Z         },
2026-06-21T11:53:56.0436547Z         "impl": {
2026-06-21T11:53:56.0436647Z           "complete": true,
2026-06-21T11:53:56.0436734Z           "evidence": [
2026-06-21T11:53:56.0436895Z             {
2026-06-21T11:53:56.0437004Z               "path": "installer/install.ps1",
2026-06-21T11:53:56.0437170Z               "line": 100
2026-06-21T11:53:56.0437245Z             },
2026-06-21T11:53:56.0437330Z             {
2026-06-21T11:53:56.0437436Z               "path": "installer/install.ps1",
2026-06-21T11:53:56.0437517Z               "line": 111
2026-06-21T11:53:56.0437602Z             },
2026-06-21T11:53:56.0437674Z             {
2026-06-21T11:53:56.0437784Z               "path": "installer/install.sh",
2026-06-21T11:53:56.0437860Z               "line": 79
2026-06-21T11:53:56.0437946Z             }
2026-06-21T11:53:56.0438032Z           ]
2026-06-21T11:53:56.0438118Z         },
2026-06-21T11:53:56.0438212Z         "int": {
2026-06-21T11:53:56.0438293Z           "complete": true,
2026-06-21T11:53:56.0438376Z           "evidence": [
2026-06-21T11:53:56.0438461Z             {
2026-06-21T11:53:56.0438580Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T11:53:56.0438676Z               "line": 167
2026-06-21T11:53:56.0438756Z             }
2026-06-21T11:53:56.0438842Z           ]
2026-06-21T11:53:56.0438928Z         },
2026-06-21T11:53:56.0439104Z         "unit": {
2026-06-21T11:53:56.0439190Z           "complete": false,
2026-06-21T11:53:56.0439291Z           "evidence": []
2026-06-21T11:53:56.0439372Z         }
2026-06-21T11:53:56.0439452Z       }
2026-06-21T11:53:56.0439543Z     },
2026-06-21T11:53:56.0439620Z     {
2026-06-21T11:53:56.0439725Z       "id": "REQ-INSTALL-4",
2026-06-21T11:53:56.0440346Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T11:53:56.0440436Z       "requiredStages": [
2026-06-21T11:53:56.0440516Z         "impl",
2026-06-21T11:53:56.0440599Z         "unit"
2026-06-21T11:53:56.0440685Z       ],
2026-06-21T11:53:56.0440765Z       "stages": {
2026-06-21T11:53:56.0440860Z         "doc": {
2026-06-21T11:53:56.0440956Z           "complete": false,
2026-06-21T11:53:56.0441047Z           "evidence": []
2026-06-21T11:53:56.0441132Z         },
2026-06-21T11:53:56.0441213Z         "impl": {
2026-06-21T11:53:56.0441314Z           "complete": true,
2026-06-21T11:53:56.0441395Z           "evidence": [
2026-06-21T11:53:56.0441471Z             {
2026-06-21T11:53:56.0441614Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.0441700Z               "line": 165
2026-06-21T11:53:56.0441781Z             },
2026-06-21T11:53:56.0441868Z             {
2026-06-21T11:53:56.0441995Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0442082Z               "line": 29
2026-06-21T11:53:56.0442168Z             },
2026-06-21T11:53:56.0442249Z             {
2026-06-21T11:53:56.0442367Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0442461Z               "line": 288
2026-06-21T11:53:56.0442543Z             },
2026-06-21T11:53:56.0442632Z             {
2026-06-21T11:53:56.0442740Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0442846Z               "line": 356
2026-06-21T11:53:56.0442932Z             },
2026-06-21T11:53:56.0443013Z             {
2026-06-21T11:53:56.0443131Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0443214Z               "line": 386
2026-06-21T11:53:56.0445815Z             },
2026-06-21T11:53:56.0445919Z             {
2026-06-21T11:53:56.0446054Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0446154Z               "line": 434
2026-06-21T11:53:56.0446239Z             },
2026-06-21T11:53:56.0446321Z             {
2026-06-21T11:53:56.0446431Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0446517Z               "line": 5396
2026-06-21T11:53:56.0446602Z             }
2026-06-21T11:53:56.0446684Z           ]
2026-06-21T11:53:56.0446921Z         },
2026-06-21T11:53:56.0446999Z         "int": {
2026-06-21T11:53:56.0447098Z           "complete": false,
2026-06-21T11:53:56.0447265Z           "evidence": []
2026-06-21T11:53:56.0447352Z         },
2026-06-21T11:53:56.0447436Z         "unit": {
2026-06-21T11:53:56.0447521Z           "complete": true,
2026-06-21T11:53:56.0447612Z           "evidence": [
2026-06-21T11:53:56.0447683Z             {
2026-06-21T11:53:56.0447824Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.0447909Z               "line": 375
2026-06-21T11:53:56.0447996Z             },
2026-06-21T11:53:56.0448064Z             {
2026-06-21T11:53:56.0448196Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0448287Z               "line": 808
2026-06-21T11:53:56.0448363Z             },
2026-06-21T11:53:56.0448439Z             {
2026-06-21T11:53:56.0448553Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0448636Z               "line": 849
2026-06-21T11:53:56.0448716Z             },
2026-06-21T11:53:56.0448801Z             {
2026-06-21T11:53:56.0448922Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0449102Z               "line": 869
2026-06-21T11:53:56.0449183Z             },
2026-06-21T11:53:56.0449260Z             {
2026-06-21T11:53:56.0449359Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0449455Z               "line": 8403
2026-06-21T11:53:56.0449537Z             }
2026-06-21T11:53:56.0449618Z           ]
2026-06-21T11:53:56.0449693Z         }
2026-06-21T11:53:56.0449774Z       }
2026-06-21T11:53:56.0449856Z     },
2026-06-21T11:53:56.0449937Z     {
2026-06-21T11:53:56.0450031Z       "id": "REQ-INSTALL-5",
2026-06-21T11:53:56.0450531Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T11:53:56.0450634Z       "requiredStages": [
2026-06-21T11:53:56.0450734Z         "impl",
2026-06-21T11:53:56.0450815Z         "int"
2026-06-21T11:53:56.0450897Z       ],
2026-06-21T11:53:56.0450991Z       "stages": {
2026-06-21T11:53:56.0451072Z         "doc": {
2026-06-21T11:53:56.0451164Z           "complete": false,
2026-06-21T11:53:56.0451254Z           "evidence": []
2026-06-21T11:53:56.0451330Z         },
2026-06-21T11:53:56.0451420Z         "impl": {
2026-06-21T11:53:56.0451508Z           "complete": true,
2026-06-21T11:53:56.0451593Z           "evidence": [
2026-06-21T11:53:56.0451673Z             {
2026-06-21T11:53:56.0451793Z               "path": "installer/install.ps1",
2026-06-21T11:53:56.0451874Z               "line": 5
2026-06-21T11:53:56.0451955Z             },
2026-06-21T11:53:56.0452040Z             {
2026-06-21T11:53:56.0452142Z               "path": "installer/install.sh",
2026-06-21T11:53:56.0452231Z               "line": 6
2026-06-21T11:53:56.0452307Z             }
2026-06-21T11:53:56.0452389Z           ]
2026-06-21T11:53:56.0452476Z         },
2026-06-21T11:53:56.0452560Z         "int": {
2026-06-21T11:53:56.0452656Z           "complete": true,
2026-06-21T11:53:56.0452743Z           "evidence": [
2026-06-21T11:53:56.0452828Z             {
2026-06-21T11:53:56.0452946Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T11:53:56.0453031Z               "line": 22
2026-06-21T11:53:56.0453117Z             }
2026-06-21T11:53:56.0453201Z           ]
2026-06-21T11:53:56.0453286Z         },
2026-06-21T11:53:56.0453367Z         "unit": {
2026-06-21T11:53:56.0453459Z           "complete": false,
2026-06-21T11:53:56.0453544Z           "evidence": []
2026-06-21T11:53:56.0453629Z         }
2026-06-21T11:53:56.0453711Z       }
2026-06-21T11:53:56.0453793Z     },
2026-06-21T11:53:56.0453878Z     {
2026-06-21T11:53:56.0453958Z       "id": "REQ-INSTALL-6",
2026-06-21T11:53:56.0455194Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T11:53:56.0455475Z       "requiredStages": [
2026-06-21T11:53:56.0455556Z         "impl",
2026-06-21T11:53:56.0455644Z         "unit"
2026-06-21T11:53:56.0455724Z       ],
2026-06-21T11:53:56.0455808Z       "stages": {
2026-06-21T11:53:56.0455884Z         "doc": {
2026-06-21T11:53:56.0455970Z           "complete": false,
2026-06-21T11:53:56.0456057Z           "evidence": []
2026-06-21T11:53:56.0456137Z         },
2026-06-21T11:53:56.0456223Z         "impl": {
2026-06-21T11:53:56.0456309Z           "complete": true,
2026-06-21T11:53:56.0456395Z           "evidence": [
2026-06-21T11:53:56.0456480Z             {
2026-06-21T11:53:56.0456605Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0456700Z               "line": 61
2026-06-21T11:53:56.0456776Z             },
2026-06-21T11:53:56.0456862Z             {
2026-06-21T11:53:56.0456981Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.0457082Z               "line": 641
2026-06-21T11:53:56.0457167Z             },
2026-06-21T11:53:56.0457249Z             {
2026-06-21T11:53:56.0457376Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:56.0457462Z               "line": 191
2026-06-21T11:53:56.0457545Z             },
2026-06-21T11:53:56.0457621Z             {
2026-06-21T11:53:56.0457744Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:56.0457825Z               "line": 276
2026-06-21T11:53:56.0457907Z             },
2026-06-21T11:53:56.0457992Z             {
2026-06-21T11:53:56.0458101Z               "path": "crates/spt/src/main.rs",
2026-06-21T11:53:56.0458186Z               "line": 43
2026-06-21T11:53:56.0458272Z             },
2026-06-21T11:53:56.0458356Z             {
2026-06-21T11:53:56.0458464Z               "path": "installer/install.sh",
2026-06-21T11:53:56.0458556Z               "line": 104
2026-06-21T11:53:56.0458638Z             }
2026-06-21T11:53:56.0458722Z           ]
2026-06-21T11:53:56.0458804Z         },
2026-06-21T11:53:56.0458886Z         "int": {
2026-06-21T11:53:56.0459056Z           "complete": false,
2026-06-21T11:53:56.0459138Z           "evidence": []
2026-06-21T11:53:56.0459219Z         },
2026-06-21T11:53:56.0459300Z         "unit": {
2026-06-21T11:53:56.0459385Z           "complete": true,
2026-06-21T11:53:56.0459467Z           "evidence": [
2026-06-21T11:53:56.0459548Z             {
2026-06-21T11:53:56.0459671Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T11:53:56.0459762Z               "line": 894
2026-06-21T11:53:56.0459839Z             }
2026-06-21T11:53:56.0459924Z           ]
2026-06-21T11:53:56.0460005Z         }
2026-06-21T11:53:56.0460087Z       }
2026-06-21T11:53:56.0460169Z     },
2026-06-21T11:53:56.0460248Z     {
2026-06-21T11:53:56.0460339Z       "id": "REQ-INSTALL-7",
2026-06-21T11:53:56.0461462Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T11:53:56.0461571Z       "requiredStages": [
2026-06-21T11:53:56.0461656Z         "impl"
2026-06-21T11:53:56.0461734Z       ],
2026-06-21T11:53:56.0461824Z       "stages": {
2026-06-21T11:53:56.0461899Z         "doc": {
2026-06-21T11:53:56.0461990Z           "complete": false,
2026-06-21T11:53:56.0462082Z           "evidence": []
2026-06-21T11:53:56.0462167Z         },
2026-06-21T11:53:56.0462247Z         "impl": {
2026-06-21T11:53:56.0462339Z           "complete": true,
2026-06-21T11:53:56.0462425Z           "evidence": [
2026-06-21T11:53:56.0462506Z             {
2026-06-21T11:53:56.0462716Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0462801Z               "line": 3920
2026-06-21T11:53:56.0462964Z             },
2026-06-21T11:53:56.0463045Z             {
2026-06-21T11:53:56.0463153Z               "path": "installer/install.ps1",
2026-06-21T11:53:56.0463244Z               "line": 157
2026-06-21T11:53:56.0463327Z             }
2026-06-21T11:53:56.0463407Z           ]
2026-06-21T11:53:56.0463487Z         },
2026-06-21T11:53:56.0463572Z         "int": {
2026-06-21T11:53:56.0463663Z           "complete": false,
2026-06-21T11:53:56.0463747Z           "evidence": []
2026-06-21T11:53:56.0463833Z         },
2026-06-21T11:53:56.0463913Z         "unit": {
2026-06-21T11:53:56.0463995Z           "complete": false,
2026-06-21T11:53:56.0464076Z           "evidence": []
2026-06-21T11:53:56.0464161Z         }
2026-06-21T11:53:56.0464247Z       }
2026-06-21T11:53:56.0464329Z     },
2026-06-21T11:53:56.0464410Z     {
2026-06-21T11:53:56.0464490Z       "id": "REQ-INSTALL-8",
2026-06-21T11:53:56.0465540Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T11:53:56.0465640Z       "requiredStages": [
2026-06-21T11:53:56.0465725Z         "impl"
2026-06-21T11:53:56.0465806Z       ],
2026-06-21T11:53:56.0465884Z       "stages": {
2026-06-21T11:53:56.0465964Z         "doc": {
2026-06-21T11:53:56.0466044Z           "complete": false,
2026-06-21T11:53:56.0466141Z           "evidence": []
2026-06-21T11:53:56.0466223Z         },
2026-06-21T11:53:56.0466307Z         "impl": {
2026-06-21T11:53:56.0466401Z           "complete": true,
2026-06-21T11:53:56.0466487Z           "evidence": [
2026-06-21T11:53:56.0466574Z             {
2026-06-21T11:53:56.0466683Z               "path": "installer/install.ps1",
2026-06-21T11:53:56.0466773Z               "line": 184
2026-06-21T11:53:56.0466859Z             },
2026-06-21T11:53:56.0466945Z             {
2026-06-21T11:53:56.0467045Z               "path": "installer/install.sh",
2026-06-21T11:53:56.0467117Z               "line": 121
2026-06-21T11:53:56.0467203Z             }
2026-06-21T11:53:56.0467284Z           ]
2026-06-21T11:53:56.0467364Z         },
2026-06-21T11:53:56.0467450Z         "int": {
2026-06-21T11:53:56.0467541Z           "complete": false,
2026-06-21T11:53:56.0467627Z           "evidence": []
2026-06-21T11:53:56.0467707Z         },
2026-06-21T11:53:56.0467795Z         "unit": {
2026-06-21T11:53:56.0467876Z           "complete": false,
2026-06-21T11:53:56.0467966Z           "evidence": []
2026-06-21T11:53:56.0468051Z         }
2026-06-21T11:53:56.0468138Z       }
2026-06-21T11:53:56.0468219Z     },
2026-06-21T11:53:56.0468299Z     {
2026-06-21T11:53:56.0468381Z       "id": "REQ-INSTALL-9",
2026-06-21T11:53:56.0469678Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T11:53:56.0469780Z       "requiredStages": [
2026-06-21T11:53:56.0469865Z         "doc",
2026-06-21T11:53:56.0469955Z         "impl",
2026-06-21T11:53:56.0470037Z         "unit"
2026-06-21T11:53:56.0470113Z       ],
2026-06-21T11:53:56.0470203Z       "stages": {
2026-06-21T11:53:56.0470279Z         "doc": {
2026-06-21T11:53:56.0470375Z           "complete": true,
2026-06-21T11:53:56.0470456Z           "evidence": [
2026-06-21T11:53:56.0470532Z             {
2026-06-21T11:53:56.0470632Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0470827Z               "line": 771
2026-06-21T11:53:56.0470908Z             }
2026-06-21T11:53:56.0470986Z           ]
2026-06-21T11:53:56.0471166Z         },
2026-06-21T11:53:56.0471243Z         "impl": {
2026-06-21T11:53:56.0471339Z           "complete": true,
2026-06-21T11:53:56.0471424Z           "evidence": [
2026-06-21T11:53:56.0471499Z             {
2026-06-21T11:53:56.0471599Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0471680Z               "line": 2535
2026-06-21T11:53:56.0471764Z             },
2026-06-21T11:53:56.0471849Z             {
2026-06-21T11:53:56.0471945Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0472031Z               "line": 2559
2026-06-21T11:53:56.0472112Z             }
2026-06-21T11:53:56.0472197Z           ]
2026-06-21T11:53:56.0472279Z         },
2026-06-21T11:53:56.0472374Z         "int": {
2026-06-21T11:53:56.0472459Z           "complete": false,
2026-06-21T11:53:56.0472550Z           "evidence": []
2026-06-21T11:53:56.0472637Z         },
2026-06-21T11:53:56.0472713Z         "unit": {
2026-06-21T11:53:56.0472807Z           "complete": true,
2026-06-21T11:53:56.0472894Z           "evidence": [
2026-06-21T11:53:56.0472980Z             {
2026-06-21T11:53:56.0473080Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0473170Z               "line": 7591
2026-06-21T11:53:56.0473253Z             },
2026-06-21T11:53:56.0473323Z             {
2026-06-21T11:53:56.0473418Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0473499Z               "line": 8433
2026-06-21T11:53:56.0473582Z             }
2026-06-21T11:53:56.0473666Z           ]
2026-06-21T11:53:56.0473747Z         }
2026-06-21T11:53:56.0473834Z       }
2026-06-21T11:53:56.0473906Z     },
2026-06-21T11:53:56.0473986Z     {
2026-06-21T11:53:56.0474071Z       "id": "REQ-KICK-1",
2026-06-21T11:53:56.0476571Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T11:53:56.0476686Z       "requiredStages": [
2026-06-21T11:53:56.0476773Z         "doc",
2026-06-21T11:53:56.0476853Z         "impl",
2026-06-21T11:53:56.0476943Z         "unit",
2026-06-21T11:53:56.0477018Z         "int"
2026-06-21T11:53:56.0477100Z       ],
2026-06-21T11:53:56.0477182Z       "stages": {
2026-06-21T11:53:56.0477276Z         "doc": {
2026-06-21T11:53:56.0477376Z           "complete": true,
2026-06-21T11:53:56.0477458Z           "evidence": [
2026-06-21T11:53:56.0477539Z             {
2026-06-21T11:53:56.0477624Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0477706Z               "line": 342
2026-06-21T11:53:56.0477787Z             }
2026-06-21T11:53:56.0477868Z           ]
2026-06-21T11:53:56.0477957Z         },
2026-06-21T11:53:56.0478045Z         "impl": {
2026-06-21T11:53:56.0478140Z           "complete": true,
2026-06-21T11:53:56.0478225Z           "evidence": [
2026-06-21T11:53:56.0478311Z             {
2026-06-21T11:53:56.0478421Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0478511Z               "line": 41
2026-06-21T11:53:56.0478592Z             },
2026-06-21T11:53:56.0478675Z             {
2026-06-21T11:53:56.0478774Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0478859Z               "line": 701
2026-06-21T11:53:56.0479098Z             }
2026-06-21T11:53:56.0479182Z           ]
2026-06-21T11:53:56.0479268Z         },
2026-06-21T11:53:56.0479443Z         "int": {
2026-06-21T11:53:56.0479528Z           "complete": true,
2026-06-21T11:53:56.0479619Z           "evidence": [
2026-06-21T11:53:56.0479696Z             {
2026-06-21T11:53:56.0479805Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0479890Z               "line": 913
2026-06-21T11:53:56.0479977Z             }
2026-06-21T11:53:56.0480058Z           ]
2026-06-21T11:53:56.0480143Z         },
2026-06-21T11:53:56.0480224Z         "unit": {
2026-06-21T11:53:56.0480316Z           "complete": true,
2026-06-21T11:53:56.0480396Z           "evidence": [
2026-06-21T11:53:56.0480481Z             {
2026-06-21T11:53:56.0480602Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0480678Z               "line": 205
2026-06-21T11:53:56.0480763Z             }
2026-06-21T11:53:56.0480849Z           ]
2026-06-21T11:53:56.0480935Z         }
2026-06-21T11:53:56.0481021Z       }
2026-06-21T11:53:56.0481107Z     },
2026-06-21T11:53:56.0481192Z     {
2026-06-21T11:53:56.0481279Z       "id": "REQ-MANIFEST-1",
2026-06-21T11:53:56.0481464Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T11:53:56.0481556Z       "requiredStages": [
2026-06-21T11:53:56.0481641Z         "doc",
2026-06-21T11:53:56.0481721Z         "impl",
2026-06-21T11:53:56.0481803Z         "unit"
2026-06-21T11:53:56.0481890Z       ],
2026-06-21T11:53:56.0481970Z       "stages": {
2026-06-21T11:53:56.0482054Z         "doc": {
2026-06-21T11:53:56.0482144Z           "complete": true,
2026-06-21T11:53:56.0482231Z           "evidence": [
2026-06-21T11:53:56.0482311Z             {
2026-06-21T11:53:56.0482404Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.0482491Z               "line": 19
2026-06-21T11:53:56.0482582Z             }
2026-06-21T11:53:56.0482663Z           ]
2026-06-21T11:53:56.0482753Z         },
2026-06-21T11:53:56.0482825Z         "impl": {
2026-06-21T11:53:56.0482911Z           "complete": true,
2026-06-21T11:53:56.0483001Z           "evidence": [
2026-06-21T11:53:56.0483086Z             {
2026-06-21T11:53:56.0483212Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0483283Z               "line": 18
2026-06-21T11:53:56.0483367Z             }
2026-06-21T11:53:56.0483454Z           ]
2026-06-21T11:53:56.0483526Z         },
2026-06-21T11:53:56.0483601Z         "int": {
2026-06-21T11:53:56.0483687Z           "complete": false,
2026-06-21T11:53:56.0483769Z           "evidence": []
2026-06-21T11:53:56.0483855Z         },
2026-06-21T11:53:56.0483940Z         "unit": {
2026-06-21T11:53:56.0484021Z           "complete": true,
2026-06-21T11:53:56.0484108Z           "evidence": [
2026-06-21T11:53:56.0484189Z             {
2026-06-21T11:53:56.0484307Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0484394Z               "line": 1029
2026-06-21T11:53:56.0484481Z             },
2026-06-21T11:53:56.0484569Z             {
2026-06-21T11:53:56.0484687Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0484764Z               "line": 1325
2026-06-21T11:53:56.0484849Z             },
2026-06-21T11:53:56.0484933Z             {
2026-06-21T11:53:56.0485058Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0485144Z               "line": 1337
2026-06-21T11:53:56.0485234Z             },
2026-06-21T11:53:56.0485315Z             {
2026-06-21T11:53:56.0485435Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0485521Z               "line": 1348
2026-06-21T11:53:56.0485601Z             },
2026-06-21T11:53:56.0485687Z             {
2026-06-21T11:53:56.0485801Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0485892Z               "line": 1365
2026-06-21T11:53:56.0485972Z             },
2026-06-21T11:53:56.0486060Z             {
2026-06-21T11:53:56.0486273Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0486365Z               "line": 1379
2026-06-21T11:53:56.0486521Z             },
2026-06-21T11:53:56.0486607Z             {
2026-06-21T11:53:56.0486727Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0486812Z               "line": 1495
2026-06-21T11:53:56.0486903Z             },
2026-06-21T11:53:56.0486985Z             {
2026-06-21T11:53:56.0487098Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0487184Z               "line": 1510
2026-06-21T11:53:56.0487266Z             },
2026-06-21T11:53:56.0487353Z             {
2026-06-21T11:53:56.0487464Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0487554Z               "line": 1621
2026-06-21T11:53:56.0487636Z             },
2026-06-21T11:53:56.0487718Z             {
2026-06-21T11:53:56.0487846Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0487927Z               "line": 1632
2026-06-21T11:53:56.0488018Z             }
2026-06-21T11:53:56.0488099Z           ]
2026-06-21T11:53:56.0488203Z         }
2026-06-21T11:53:56.0488281Z       }
2026-06-21T11:53:56.0488366Z     },
2026-06-21T11:53:56.0488456Z     {
2026-06-21T11:53:56.0488537Z       "id": "REQ-MANIFEST-2",
2026-06-21T11:53:56.0489114Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T11:53:56.0489210Z       "requiredStages": [
2026-06-21T11:53:56.0489282Z         "doc",
2026-06-21T11:53:56.0489367Z         "impl",
2026-06-21T11:53:56.0489448Z         "unit"
2026-06-21T11:53:56.0489534Z       ],
2026-06-21T11:53:56.0489616Z       "stages": {
2026-06-21T11:53:56.0489696Z         "doc": {
2026-06-21T11:53:56.0489776Z           "complete": true,
2026-06-21T11:53:56.0489881Z           "evidence": [
2026-06-21T11:53:56.0489961Z             {
2026-06-21T11:53:56.0490046Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0490136Z               "line": 75
2026-06-21T11:53:56.0490222Z             }
2026-06-21T11:53:56.0490314Z           ]
2026-06-21T11:53:56.0490393Z         },
2026-06-21T11:53:56.0490479Z         "impl": {
2026-06-21T11:53:56.0490571Z           "complete": true,
2026-06-21T11:53:56.0490661Z           "evidence": [
2026-06-21T11:53:56.0490741Z             {
2026-06-21T11:53:56.0490852Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0490933Z               "line": 82
2026-06-21T11:53:56.0491008Z             },
2026-06-21T11:53:56.0491084Z             {
2026-06-21T11:53:56.0491210Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0491295Z               "line": 15
2026-06-21T11:53:56.0491375Z             },
2026-06-21T11:53:56.0491462Z             {
2026-06-21T11:53:56.0491586Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0491667Z               "line": 65
2026-06-21T11:53:56.0491753Z             },
2026-06-21T11:53:56.0491839Z             {
2026-06-21T11:53:56.0491962Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0492058Z               "line": 83
2026-06-21T11:53:56.0492140Z             },
2026-06-21T11:53:56.0492225Z             {
2026-06-21T11:53:56.0492334Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0492426Z               "line": 183
2026-06-21T11:53:56.0492507Z             },
2026-06-21T11:53:56.0492582Z             {
2026-06-21T11:53:56.0492700Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0492786Z               "line": 527
2026-06-21T11:53:56.0492866Z             },
2026-06-21T11:53:56.0492946Z             {
2026-06-21T11:53:56.0493065Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0493147Z               "line": 553
2026-06-21T11:53:56.0493232Z             },
2026-06-21T11:53:56.0493313Z             {
2026-06-21T11:53:56.0493428Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0493627Z               "line": 671
2026-06-21T11:53:56.0493791Z             },
2026-06-21T11:53:56.0493867Z             {
2026-06-21T11:53:56.0493981Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0494067Z               "line": 696
2026-06-21T11:53:56.0494152Z             },
2026-06-21T11:53:56.0494238Z             {
2026-06-21T11:53:56.0494358Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0494448Z               "line": 719
2026-06-21T11:53:56.0494534Z             },
2026-06-21T11:53:56.0494620Z             {
2026-06-21T11:53:56.0494721Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0494810Z               "line": 734
2026-06-21T11:53:56.0494891Z             },
2026-06-21T11:53:56.0494974Z             {
2026-06-21T11:53:56.0495078Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0495158Z               "line": 5567
2026-06-21T11:53:56.0495252Z             },
2026-06-21T11:53:56.0495334Z             {
2026-06-21T11:53:56.0495433Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0495531Z               "line": 5581
2026-06-21T11:53:56.0495618Z             },
2026-06-21T11:53:56.0495699Z             {
2026-06-21T11:53:56.0495803Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0495889Z               "line": 5615
2026-06-21T11:53:56.0495966Z             }
2026-06-21T11:53:56.0496056Z           ]
2026-06-21T11:53:56.0496137Z         },
2026-06-21T11:53:56.0496222Z         "int": {
2026-06-21T11:53:56.0496315Z           "complete": false,
2026-06-21T11:53:56.0496405Z           "evidence": []
2026-06-21T11:53:56.0496494Z         },
2026-06-21T11:53:56.0496577Z         "unit": {
2026-06-21T11:53:56.0496672Z           "complete": true,
2026-06-21T11:53:56.0496762Z           "evidence": [
2026-06-21T11:53:56.0496848Z             {
2026-06-21T11:53:56.0496973Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.0497077Z               "line": 921
2026-06-21T11:53:56.0497153Z             },
2026-06-21T11:53:56.0497249Z             {
2026-06-21T11:53:56.0497362Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0497448Z               "line": 211
2026-06-21T11:53:56.0497540Z             },
2026-06-21T11:53:56.0497626Z             {
2026-06-21T11:53:56.0497744Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0497831Z               "line": 272
2026-06-21T11:53:56.0497908Z             },
2026-06-21T11:53:56.0497992Z             {
2026-06-21T11:53:56.0498110Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0498201Z               "line": 313
2026-06-21T11:53:56.0498288Z             },
2026-06-21T11:53:56.0498368Z             {
2026-06-21T11:53:56.0498482Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0498564Z               "line": 325
2026-06-21T11:53:56.0498650Z             },
2026-06-21T11:53:56.0498735Z             {
2026-06-21T11:53:56.0498855Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0499030Z               "line": 336
2026-06-21T11:53:56.0499112Z             },
2026-06-21T11:53:56.0499203Z             {
2026-06-21T11:53:56.0499312Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0499421Z               "line": 345
2026-06-21T11:53:56.0499504Z             },
2026-06-21T11:53:56.0499584Z             {
2026-06-21T11:53:56.0499703Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0499780Z               "line": 361
2026-06-21T11:53:56.0499865Z             },
2026-06-21T11:53:56.0499946Z             {
2026-06-21T11:53:56.0500065Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0500152Z               "line": 444
2026-06-21T11:53:56.0500232Z             },
2026-06-21T11:53:56.0500308Z             {
2026-06-21T11:53:56.0500426Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0500620Z               "line": 958
2026-06-21T11:53:56.0500700Z             },
2026-06-21T11:53:56.0500864Z             {
2026-06-21T11:53:56.0500982Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0501063Z               "line": 982
2026-06-21T11:53:56.0501150Z             },
2026-06-21T11:53:56.0501230Z             {
2026-06-21T11:53:56.0501344Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0501431Z               "line": 1008
2026-06-21T11:53:56.0501512Z             },
2026-06-21T11:53:56.0501597Z             {
2026-06-21T11:53:56.0501713Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0501798Z               "line": 1027
2026-06-21T11:53:56.0501879Z             },
2026-06-21T11:53:56.0501959Z             {
2026-06-21T11:53:56.0502070Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0502160Z               "line": 1058
2026-06-21T11:53:56.0502260Z             },
2026-06-21T11:53:56.0502332Z             {
2026-06-21T11:53:56.0502456Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:56.0502542Z               "line": 309
2026-06-21T11:53:56.0502633Z             },
2026-06-21T11:53:56.0502709Z             {
2026-06-21T11:53:56.0502823Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.0502918Z               "line": 606
2026-06-21T11:53:56.0502996Z             },
2026-06-21T11:53:56.0503081Z             {
2026-06-21T11:53:56.0503179Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0503274Z               "line": 8610
2026-06-21T11:53:56.0503355Z             },
2026-06-21T11:53:56.0503440Z             {
2026-06-21T11:53:56.0503539Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0503621Z               "line": 9558
2026-06-21T11:53:56.0503698Z             }
2026-06-21T11:53:56.0503783Z           ]
2026-06-21T11:53:56.0503863Z         }
2026-06-21T11:53:56.0503950Z       }
2026-06-21T11:53:56.0504036Z     },
2026-06-21T11:53:56.0504121Z     {
2026-06-21T11:53:56.0504216Z       "id": "REQ-MANIFEST-3",
2026-06-21T11:53:56.0504860Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T11:53:56.0504947Z       "requiredStages": [
2026-06-21T11:53:56.0505032Z         "doc",
2026-06-21T11:53:56.0505113Z         "impl",
2026-06-21T11:53:56.0505194Z         "unit"
2026-06-21T11:53:56.0505281Z       ],
2026-06-21T11:53:56.0505356Z       "stages": {
2026-06-21T11:53:56.0505437Z         "doc": {
2026-06-21T11:53:56.0505524Z           "complete": true,
2026-06-21T11:53:56.0505615Z           "evidence": [
2026-06-21T11:53:56.0505699Z             {
2026-06-21T11:53:56.0505798Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0505889Z               "line": 81
2026-06-21T11:53:56.0505984Z             }
2026-06-21T11:53:56.0506073Z           ]
2026-06-21T11:53:56.0506153Z         },
2026-06-21T11:53:56.0506245Z         "impl": {
2026-06-21T11:53:56.0506340Z           "complete": true,
2026-06-21T11:53:56.0506435Z           "evidence": [
2026-06-21T11:53:56.0506516Z             {
2026-06-21T11:53:56.0506631Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0506725Z               "line": 92
2026-06-21T11:53:56.0506812Z             },
2026-06-21T11:53:56.0506898Z             {
2026-06-21T11:53:56.0507017Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0507102Z               "line": 101
2026-06-21T11:53:56.0507194Z             },
2026-06-21T11:53:56.0507269Z             {
2026-06-21T11:53:56.0507384Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0507461Z               "line": 132
2026-06-21T11:53:56.0507547Z             },
2026-06-21T11:53:56.0507628Z             {
2026-06-21T11:53:56.0507742Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0507913Z               "line": 577
2026-06-21T11:53:56.0508061Z             },
2026-06-21T11:53:56.0508148Z             {
2026-06-21T11:53:56.0508265Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0508342Z               "line": 633
2026-06-21T11:53:56.0508434Z             },
2026-06-21T11:53:56.0508515Z             {
2026-06-21T11:53:56.0508618Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0508698Z               "line": 5628
2026-06-21T11:53:56.0508780Z             },
2026-06-21T11:53:56.0508862Z             {
2026-06-21T11:53:56.0509028Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0509110Z               "line": 5654
2026-06-21T11:53:56.0509196Z             }
2026-06-21T11:53:56.0509280Z           ]
2026-06-21T11:53:56.0509362Z         },
2026-06-21T11:53:56.0509444Z         "int": {
2026-06-21T11:53:56.0509529Z           "complete": false,
2026-06-21T11:53:56.0509633Z           "evidence": []
2026-06-21T11:53:56.0509715Z         },
2026-06-21T11:53:56.0509796Z         "unit": {
2026-06-21T11:53:56.0509900Z           "complete": true,
2026-06-21T11:53:56.0509981Z           "evidence": [
2026-06-21T11:53:56.0510064Z             {
2026-06-21T11:53:56.0510187Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0510277Z               "line": 371
2026-06-21T11:53:56.0510364Z             },
2026-06-21T11:53:56.0510440Z             {
2026-06-21T11:53:56.0510558Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0510650Z               "line": 429
2026-06-21T11:53:56.0510741Z             },
2026-06-21T11:53:56.0510825Z             {
2026-06-21T11:53:56.0510943Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0511044Z               "line": 1082
2026-06-21T11:53:56.0511123Z             },
2026-06-21T11:53:56.0511208Z             {
2026-06-21T11:53:56.0511309Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0511405Z               "line": 8703
2026-06-21T11:53:56.0511485Z             }
2026-06-21T11:53:56.0511575Z           ]
2026-06-21T11:53:56.0511652Z         }
2026-06-21T11:53:56.0511738Z       }
2026-06-21T11:53:56.0511819Z     },
2026-06-21T11:53:56.0511904Z     {
2026-06-21T11:53:56.0511996Z       "id": "REQ-MANIFEST-4",
2026-06-21T11:53:56.0512696Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T11:53:56.0512801Z       "requiredStages": [
2026-06-21T11:53:56.0512883Z         "doc",
2026-06-21T11:53:56.0512969Z         "impl",
2026-06-21T11:53:56.0513058Z         "unit"
2026-06-21T11:53:56.0513144Z       ],
2026-06-21T11:53:56.0513227Z       "stages": {
2026-06-21T11:53:56.0513307Z         "doc": {
2026-06-21T11:53:56.0513392Z           "complete": true,
2026-06-21T11:53:56.0513493Z           "evidence": [
2026-06-21T11:53:56.0513571Z             {
2026-06-21T11:53:56.0513664Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0513758Z               "line": 88
2026-06-21T11:53:56.0513844Z             }
2026-06-21T11:53:56.0513930Z           ]
2026-06-21T11:53:56.0514014Z         },
2026-06-21T11:53:56.0514099Z         "impl": {
2026-06-21T11:53:56.0514185Z           "complete": true,
2026-06-21T11:53:56.0514272Z           "evidence": [
2026-06-21T11:53:56.0514357Z             {
2026-06-21T11:53:56.0516956Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0517062Z               "line": 100
2026-06-21T11:53:56.0517153Z             },
2026-06-21T11:53:56.0517234Z             {
2026-06-21T11:53:56.0517357Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0517449Z               "line": 183
2026-06-21T11:53:56.0517530Z             },
2026-06-21T11:53:56.0517614Z             {
2026-06-21T11:53:56.0517740Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0517978Z               "line": 83
2026-06-21T11:53:56.0518144Z             },
2026-06-21T11:53:56.0518226Z             {
2026-06-21T11:53:56.0518360Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0518441Z               "line": 629
2026-06-21T11:53:56.0518526Z             },
2026-06-21T11:53:56.0518602Z             {
2026-06-21T11:53:56.0518713Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0518798Z               "line": 654
2026-06-21T11:53:56.0518879Z             }
2026-06-21T11:53:56.0519037Z           ]
2026-06-21T11:53:56.0519122Z         },
2026-06-21T11:53:56.0519197Z         "int": {
2026-06-21T11:53:56.0519293Z           "complete": false,
2026-06-21T11:53:56.0519374Z           "evidence": []
2026-06-21T11:53:56.0519455Z         },
2026-06-21T11:53:56.0519535Z         "unit": {
2026-06-21T11:53:56.0519622Z           "complete": true,
2026-06-21T11:53:56.0519703Z           "evidence": [
2026-06-21T11:53:56.0519784Z             {
2026-06-21T11:53:56.0519907Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0519999Z               "line": 1445
2026-06-21T11:53:56.0520085Z             },
2026-06-21T11:53:56.0520165Z             {
2026-06-21T11:53:56.0520285Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0520370Z               "line": 1478
2026-06-21T11:53:56.0520451Z             },
2026-06-21T11:53:56.0520532Z             {
2026-06-21T11:53:56.0520639Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0520718Z               "line": 988
2026-06-21T11:53:56.0520799Z             }
2026-06-21T11:53:56.0520881Z           ]
2026-06-21T11:53:56.0520958Z         }
2026-06-21T11:53:56.0521042Z       }
2026-06-21T11:53:56.0521118Z     },
2026-06-21T11:53:56.0521195Z     {
2026-06-21T11:53:56.0521282Z       "id": "REQ-MANIFEST-5",
2026-06-21T11:53:56.0524187Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T11:53:56.0524295Z       "requiredStages": [
2026-06-21T11:53:56.0524380Z         "doc",
2026-06-21T11:53:56.0524462Z         "impl",
2026-06-21T11:53:56.0524546Z         "unit"
2026-06-21T11:53:56.0524636Z       ],
2026-06-21T11:53:56.0524717Z       "stages": {
2026-06-21T11:53:56.0524803Z         "doc": {
2026-06-21T11:53:56.0524889Z           "complete": true,
2026-06-21T11:53:56.0524983Z           "evidence": [
2026-06-21T11:53:56.0525060Z             {
2026-06-21T11:53:56.0525161Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0525251Z               "line": 83
2026-06-21T11:53:56.0525326Z             }
2026-06-21T11:53:56.0525409Z           ]
2026-06-21T11:53:56.0525490Z         },
2026-06-21T11:53:56.0525570Z         "impl": {
2026-06-21T11:53:56.0525651Z           "complete": true,
2026-06-21T11:53:56.0525738Z           "evidence": [
2026-06-21T11:53:56.0525818Z             {
2026-06-21T11:53:56.0525947Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0526039Z               "line": 120
2026-06-21T11:53:56.0526119Z             }
2026-06-21T11:53:56.0526310Z           ]
2026-06-21T11:53:56.0526391Z         },
2026-06-21T11:53:56.0526472Z         "int": {
2026-06-21T11:53:56.0526654Z           "complete": false,
2026-06-21T11:53:56.0526744Z           "evidence": []
2026-06-21T11:53:56.0526829Z         },
2026-06-21T11:53:56.0526909Z         "unit": {
2026-06-21T11:53:56.0526995Z           "complete": true,
2026-06-21T11:53:56.0527080Z           "evidence": [
2026-06-21T11:53:56.0527169Z             {
2026-06-21T11:53:56.0527288Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T11:53:56.0527370Z               "line": 404
2026-06-21T11:53:56.0527456Z             },
2026-06-21T11:53:56.0527531Z             {
2026-06-21T11:53:56.0527661Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0527741Z               "line": 1155
2026-06-21T11:53:56.0527832Z             },
2026-06-21T11:53:56.0527917Z             {
2026-06-21T11:53:56.0528033Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0528123Z               "line": 1184
2026-06-21T11:53:56.0528208Z             },
2026-06-21T11:53:56.0528300Z             {
2026-06-21T11:53:56.0528408Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0528499Z               "line": 1224
2026-06-21T11:53:56.0528586Z             },
2026-06-21T11:53:56.0528667Z             {
2026-06-21T11:53:56.0528781Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0528867Z               "line": 1239
2026-06-21T11:53:56.0529015Z             }
2026-06-21T11:53:56.0529096Z           ]
2026-06-21T11:53:56.0529177Z         }
2026-06-21T11:53:56.0529254Z       }
2026-06-21T11:53:56.0529330Z     },
2026-06-21T11:53:56.0529405Z     {
2026-06-21T11:53:56.0529497Z       "id": "REQ-MANIFEST-6",
2026-06-21T11:53:56.0531616Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T11:53:56.0531722Z       "requiredStages": [
2026-06-21T11:53:56.0531804Z         "doc",
2026-06-21T11:53:56.0531885Z         "unit"
2026-06-21T11:53:56.0531969Z       ],
2026-06-21T11:53:56.0532049Z       "stages": {
2026-06-21T11:53:56.0532136Z         "doc": {
2026-06-21T11:53:56.0532220Z           "complete": true,
2026-06-21T11:53:56.0532305Z           "evidence": [
2026-06-21T11:53:56.0532380Z             {
2026-06-21T11:53:56.0532482Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0532577Z               "line": 141
2026-06-21T11:53:56.0532653Z             }
2026-06-21T11:53:56.0532744Z           ]
2026-06-21T11:53:56.0532825Z         },
2026-06-21T11:53:56.0532906Z         "impl": {
2026-06-21T11:53:56.0532987Z           "complete": false,
2026-06-21T11:53:56.0533078Z           "evidence": []
2026-06-21T11:53:56.0533159Z         },
2026-06-21T11:53:56.0533244Z         "int": {
2026-06-21T11:53:56.0533334Z           "complete": false,
2026-06-21T11:53:56.0533422Z           "evidence": []
2026-06-21T11:53:56.0533502Z         },
2026-06-21T11:53:56.0533587Z         "unit": {
2026-06-21T11:53:56.0533678Z           "complete": true,
2026-06-21T11:53:56.0533760Z           "evidence": [
2026-06-21T11:53:56.0533845Z             {
2026-06-21T11:53:56.0533969Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.0534056Z               "line": 1261
2026-06-21T11:53:56.0534131Z             }
2026-06-21T11:53:56.0534207Z           ]
2026-06-21T11:53:56.0534413Z         }
2026-06-21T11:53:56.0534503Z       }
2026-06-21T11:53:56.0534584Z     },
2026-06-21T11:53:56.0534657Z     {
2026-06-21T11:53:56.0534827Z       "id": "REQ-MANIFEST-7",
2026-06-21T11:53:56.0537824Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T11:53:56.0537940Z       "requiredStages": [
2026-06-21T11:53:56.0538025Z         "doc",
2026-06-21T11:53:56.0538110Z         "impl",
2026-06-21T11:53:56.0538197Z         "unit"
2026-06-21T11:53:56.0538279Z       ],
2026-06-21T11:53:56.0538364Z       "stages": {
2026-06-21T11:53:56.0538449Z         "doc": {
2026-06-21T11:53:56.0538536Z           "complete": true,
2026-06-21T11:53:56.0538621Z           "evidence": [
2026-06-21T11:53:56.0538702Z             {
2026-06-21T11:53:56.0538807Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.0538893Z               "line": 35
2026-06-21T11:53:56.0539050Z             }
2026-06-21T11:53:56.0539126Z           ]
2026-06-21T11:53:56.0539213Z         },
2026-06-21T11:53:56.0539298Z         "impl": {
2026-06-21T11:53:56.0539383Z           "complete": true,
2026-06-21T11:53:56.0539481Z           "evidence": [
2026-06-21T11:53:56.0539561Z             {
2026-06-21T11:53:56.0539680Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0539776Z               "line": 54
2026-06-21T11:53:56.0539843Z             }
2026-06-21T11:53:56.0539927Z           ]
2026-06-21T11:53:56.0540004Z         },
2026-06-21T11:53:56.0540091Z         "int": {
2026-06-21T11:53:56.0540181Z           "complete": false,
2026-06-21T11:53:56.0540265Z           "evidence": []
2026-06-21T11:53:56.0540346Z         },
2026-06-21T11:53:56.0540432Z         "unit": {
2026-06-21T11:53:56.0540518Z           "complete": true,
2026-06-21T11:53:56.0540604Z           "evidence": [
2026-06-21T11:53:56.0540684Z             {
2026-06-21T11:53:56.0540805Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0540891Z               "line": 1638
2026-06-21T11:53:56.0540975Z             }
2026-06-21T11:53:56.0541057Z           ]
2026-06-21T11:53:56.0541139Z         }
2026-06-21T11:53:56.0541234Z       }
2026-06-21T11:53:56.0541304Z     },
2026-06-21T11:53:56.0541386Z     {
2026-06-21T11:53:56.0541482Z       "id": "REQ-MANIFEST-8",
2026-06-21T11:53:56.0543667Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T11:53:56.0543762Z       "requiredStages": [
2026-06-21T11:53:56.0543847Z         "doc",
2026-06-21T11:53:56.0543929Z         "impl",
2026-06-21T11:53:56.0544115Z         "unit",
2026-06-21T11:53:56.0544200Z         "int"
2026-06-21T11:53:56.0544272Z       ],
2026-06-21T11:53:56.0544448Z       "stages": {
2026-06-21T11:53:56.0544538Z         "doc": {
2026-06-21T11:53:56.0544635Z           "complete": true,
2026-06-21T11:53:56.0544720Z           "evidence": [
2026-06-21T11:53:56.0544796Z             {
2026-06-21T11:53:56.0544902Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0544983Z               "line": 184
2026-06-21T11:53:56.0545072Z             },
2026-06-21T11:53:56.0545154Z             {
2026-06-21T11:53:56.0545251Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.0545344Z               "line": 46
2026-06-21T11:53:56.0545420Z             }
2026-06-21T11:53:56.0545505Z           ]
2026-06-21T11:53:56.0545587Z         },
2026-06-21T11:53:56.0545676Z         "impl": {
2026-06-21T11:53:56.0545756Z           "complete": true,
2026-06-21T11:53:56.0545847Z           "evidence": [
2026-06-21T11:53:56.0545923Z             {
2026-06-21T11:53:56.0546052Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0546137Z               "line": 222
2026-06-21T11:53:56.0546215Z             },
2026-06-21T11:53:56.0546305Z             {
2026-06-21T11:53:56.0546428Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0546515Z               "line": 306
2026-06-21T11:53:56.0546600Z             }
2026-06-21T11:53:56.0546681Z           ]
2026-06-21T11:53:56.0546762Z         },
2026-06-21T11:53:56.0546829Z         "int": {
2026-06-21T11:53:56.0546924Z           "complete": true,
2026-06-21T11:53:56.0547010Z           "evidence": [
2026-06-21T11:53:56.0547081Z             {
2026-06-21T11:53:56.0547216Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T11:53:56.0547296Z               "line": 18
2026-06-21T11:53:56.0547382Z             }
2026-06-21T11:53:56.0547459Z           ]
2026-06-21T11:53:56.0547545Z         },
2026-06-21T11:53:56.0547634Z         "unit": {
2026-06-21T11:53:56.0547730Z           "complete": true,
2026-06-21T11:53:56.0547808Z           "evidence": [
2026-06-21T11:53:56.0547893Z             {
2026-06-21T11:53:56.0548024Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0548110Z               "line": 1656
2026-06-21T11:53:56.0548196Z             },
2026-06-21T11:53:56.0548280Z             {
2026-06-21T11:53:56.0548399Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0548485Z               "line": 316
2026-06-21T11:53:56.0548571Z             },
2026-06-21T11:53:56.0548651Z             {
2026-06-21T11:53:56.0548762Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0548857Z               "line": 332
2026-06-21T11:53:56.0548933Z             },
2026-06-21T11:53:56.0549082Z             {
2026-06-21T11:53:56.0549186Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.0549267Z               "line": 345
2026-06-21T11:53:56.0549348Z             },
2026-06-21T11:53:56.0549434Z             {
2026-06-21T11:53:56.0549548Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0549643Z               "line": 422
2026-06-21T11:53:56.0549716Z             },
2026-06-21T11:53:56.0549796Z             {
2026-06-21T11:53:56.0549901Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T11:53:56.0549992Z               "line": 436
2026-06-21T11:53:56.0550069Z             }
2026-06-21T11:53:56.0550154Z           ]
2026-06-21T11:53:56.0550235Z         }
2026-06-21T11:53:56.0550312Z       }
2026-06-21T11:53:56.0550393Z     },
2026-06-21T11:53:56.0550478Z     {
2026-06-21T11:53:56.0550559Z       "id": "REQ-MESH-1",
2026-06-21T11:53:56.0552657Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T11:53:56.0552939Z       "requiredStages": [
2026-06-21T11:53:56.0553028Z         "impl",
2026-06-21T11:53:56.0553108Z         "unit",
2026-06-21T11:53:56.0553193Z         "int"
2026-06-21T11:53:56.0553275Z       ],
2026-06-21T11:53:56.0553360Z       "stages": {
2026-06-21T11:53:56.0553439Z         "doc": {
2026-06-21T11:53:56.0553525Z           "complete": false,
2026-06-21T11:53:56.0553612Z           "evidence": []
2026-06-21T11:53:56.0553697Z         },
2026-06-21T11:53:56.0553778Z         "impl": {
2026-06-21T11:53:56.0553869Z           "complete": true,
2026-06-21T11:53:56.0553946Z           "evidence": [
2026-06-21T11:53:56.0554036Z             {
2026-06-21T11:53:56.0554159Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.0554251Z               "line": 972
2026-06-21T11:53:56.0554341Z             },
2026-06-21T11:53:56.0554421Z             {
2026-06-21T11:53:56.0554547Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0554636Z               "line": 38
2026-06-21T11:53:56.0554717Z             },
2026-06-21T11:53:56.0554803Z             {
2026-06-21T11:53:56.0554918Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0555009Z               "line": 161
2026-06-21T11:53:56.0555084Z             },
2026-06-21T11:53:56.0555167Z             {
2026-06-21T11:53:56.0555275Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0555361Z               "line": 206
2026-06-21T11:53:56.0555443Z             },
2026-06-21T11:53:56.0555524Z             {
2026-06-21T11:53:56.0555647Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0555733Z               "line": 57
2026-06-21T11:53:56.0555811Z             },
2026-06-21T11:53:56.0555905Z             {
2026-06-21T11:53:56.0556028Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0556109Z               "line": 24
2026-06-21T11:53:56.0556194Z             },
2026-06-21T11:53:56.0556278Z             {
2026-06-21T11:53:56.0556407Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0556493Z               "line": 142
2026-06-21T11:53:56.0556574Z             },
2026-06-21T11:53:56.0556664Z             {
2026-06-21T11:53:56.0556785Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0556870Z               "line": 162
2026-06-21T11:53:56.0556950Z             }
2026-06-21T11:53:56.0557026Z           ]
2026-06-21T11:53:56.0557104Z         },
2026-06-21T11:53:56.0557189Z         "int": {
2026-06-21T11:53:56.0557288Z           "complete": true,
2026-06-21T11:53:56.0557380Z           "evidence": [
2026-06-21T11:53:56.0557466Z             {
2026-06-21T11:53:56.0557594Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T11:53:56.0557680Z               "line": 67
2026-06-21T11:53:56.0557767Z             },
2026-06-21T11:53:56.0557851Z             {
2026-06-21T11:53:56.0557975Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T11:53:56.0558058Z               "line": 93
2026-06-21T11:53:56.0558142Z             },
2026-06-21T11:53:56.0558218Z             {
2026-06-21T11:53:56.0558334Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T11:53:56.0558415Z               "line": 117
2026-06-21T11:53:56.0558499Z             },
2026-06-21T11:53:56.0558584Z             {
2026-06-21T11:53:56.0558704Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T11:53:56.0558798Z               "line": 134
2026-06-21T11:53:56.0558883Z             }
2026-06-21T11:53:56.0559045Z           ]
2026-06-21T11:53:56.0559221Z         },
2026-06-21T11:53:56.0559293Z         "unit": {
2026-06-21T11:53:56.0559384Z           "complete": true,
2026-06-21T11:53:56.0559583Z           "evidence": [
2026-06-21T11:53:56.0559652Z             {
2026-06-21T11:53:56.0559775Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0559855Z               "line": 427
2026-06-21T11:53:56.0559937Z             },
2026-06-21T11:53:56.0560023Z             {
2026-06-21T11:53:56.0560156Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0560232Z               "line": 376
2026-06-21T11:53:56.0560314Z             },
2026-06-21T11:53:56.0560394Z             {
2026-06-21T11:53:56.0560518Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0560601Z               "line": 412
2026-06-21T11:53:56.0560681Z             },
2026-06-21T11:53:56.0560766Z             {
2026-06-21T11:53:56.0560896Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0560986Z               "line": 427
2026-06-21T11:53:56.0561071Z             },
2026-06-21T11:53:56.0561157Z             {
2026-06-21T11:53:56.0561287Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0561367Z               "line": 438
2026-06-21T11:53:56.0561452Z             },
2026-06-21T11:53:56.0561537Z             {
2026-06-21T11:53:56.0561658Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0561748Z               "line": 449
2026-06-21T11:53:56.0561833Z             },
2026-06-21T11:53:56.0561915Z             {
2026-06-21T11:53:56.0562039Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0562124Z               "line": 460
2026-06-21T11:53:56.0562206Z             },
2026-06-21T11:53:56.0562292Z             {
2026-06-21T11:53:56.0562419Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0562506Z               "line": 496
2026-06-21T11:53:56.0562592Z             },
2026-06-21T11:53:56.0562678Z             {
2026-06-21T11:53:56.0562811Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0562912Z               "line": 519
2026-06-21T11:53:56.0563002Z             },
2026-06-21T11:53:56.0563082Z             {
2026-06-21T11:53:56.0563208Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0563292Z               "line": 546
2026-06-21T11:53:56.0563383Z             }
2026-06-21T11:53:56.0563460Z           ]
2026-06-21T11:53:56.0563546Z         }
2026-06-21T11:53:56.0563626Z       }
2026-06-21T11:53:56.0563711Z     },
2026-06-21T11:53:56.0563797Z     {
2026-06-21T11:53:56.0563878Z       "id": "REQ-MESH-2",
2026-06-21T11:53:56.0566465Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T11:53:56.0566588Z       "requiredStages": [
2026-06-21T11:53:56.0566674Z         "impl",
2026-06-21T11:53:56.0566764Z         "unit",
2026-06-21T11:53:56.0566843Z         "int"
2026-06-21T11:53:56.0566928Z       ],
2026-06-21T11:53:56.0567010Z       "stages": {
2026-06-21T11:53:56.0567096Z         "doc": {
2026-06-21T11:53:56.0567186Z           "complete": false,
2026-06-21T11:53:56.0567364Z           "evidence": []
2026-06-21T11:53:56.0567449Z         },
2026-06-21T11:53:56.0567534Z         "impl": {
2026-06-21T11:53:56.0567702Z           "complete": true,
2026-06-21T11:53:56.0567783Z           "evidence": [
2026-06-21T11:53:56.0567868Z             {
2026-06-21T11:53:56.0567988Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.0568073Z               "line": 807
2026-06-21T11:53:56.0568154Z             },
2026-06-21T11:53:56.0568240Z             {
2026-06-21T11:53:56.0568360Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0568450Z               "line": 118
2026-06-21T11:53:56.0568531Z             },
2026-06-21T11:53:56.0568613Z             {
2026-06-21T11:53:56.0568740Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0568831Z               "line": 347
2026-06-21T11:53:56.0568913Z             },
2026-06-21T11:53:56.0569083Z             {
2026-06-21T11:53:56.0569197Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0569297Z               "line": 389
2026-06-21T11:53:56.0569395Z             },
2026-06-21T11:53:56.0569476Z             {
2026-06-21T11:53:56.0569601Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0569687Z               "line": 403
2026-06-21T11:53:56.0569777Z             },
2026-06-21T11:53:56.0569858Z             {
2026-06-21T11:53:56.0569977Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0570062Z               "line": 492
2026-06-21T11:53:56.0570148Z             },
2026-06-21T11:53:56.0570235Z             {
2026-06-21T11:53:56.0570349Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0570439Z               "line": 507
2026-06-21T11:53:56.0570517Z             },
2026-06-21T11:53:56.0570602Z             {
2026-06-21T11:53:56.0570725Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0570807Z               "line": 534
2026-06-21T11:53:56.0570902Z             },
2026-06-21T11:53:56.0570983Z             {
2026-06-21T11:53:56.0571107Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0571194Z               "line": 207
2026-06-21T11:53:56.0571283Z             },
2026-06-21T11:53:56.0571369Z             {
2026-06-21T11:53:56.0571490Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0571588Z               "line": 755
2026-06-21T11:53:56.0571665Z             },
2026-06-21T11:53:56.0571747Z             {
2026-06-21T11:53:56.0571861Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0571950Z               "line": 816
2026-06-21T11:53:56.0572035Z             },
2026-06-21T11:53:56.0572117Z             {
2026-06-21T11:53:56.0572246Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0572327Z               "line": 869
2026-06-21T11:53:56.0572412Z             },
2026-06-21T11:53:56.0572494Z             {
2026-06-21T11:53:56.0572627Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0572718Z               "line": 891
2026-06-21T11:53:56.0572799Z             },
2026-06-21T11:53:56.0572885Z             {
2026-06-21T11:53:56.0572994Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0573086Z               "line": 122
2026-06-21T11:53:56.0573166Z             },
2026-06-21T11:53:56.0573252Z             {
2026-06-21T11:53:56.0573371Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0573457Z               "line": 44
2026-06-21T11:53:56.0573542Z             },
2026-06-21T11:53:56.0573619Z             {
2026-06-21T11:53:56.0573735Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0573820Z               "line": 184
2026-06-21T11:53:56.0573900Z             },
2026-06-21T11:53:56.0573991Z             {
2026-06-21T11:53:56.0574092Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0574186Z               "line": 211
2026-06-21T11:53:56.0574367Z             },
2026-06-21T11:53:56.0574456Z             {
2026-06-21T11:53:56.0574655Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0574737Z               "line": 251
2026-06-21T11:53:56.0574817Z             },
2026-06-21T11:53:56.0574898Z             {
2026-06-21T11:53:56.0575013Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0575094Z               "line": 275
2026-06-21T11:53:56.0575184Z             },
2026-06-21T11:53:56.0575265Z             {
2026-06-21T11:53:56.0575376Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0575461Z               "line": 289
2026-06-21T11:53:56.0575541Z             },
2026-06-21T11:53:56.0575629Z             {
2026-06-21T11:53:56.0575738Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0575828Z               "line": 300
2026-06-21T11:53:56.0575914Z             },
2026-06-21T11:53:56.0576000Z             {
2026-06-21T11:53:56.0576115Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0576204Z               "line": 313
2026-06-21T11:53:56.0576296Z             }
2026-06-21T11:53:56.0576377Z           ]
2026-06-21T11:53:56.0576463Z         },
2026-06-21T11:53:56.0576548Z         "int": {
2026-06-21T11:53:56.0576644Z           "complete": true,
2026-06-21T11:53:56.0576734Z           "evidence": [
2026-06-21T11:53:56.0576806Z             {
2026-06-21T11:53:56.0576945Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T11:53:56.0577025Z               "line": 116
2026-06-21T11:53:56.0577105Z             },
2026-06-21T11:53:56.0577195Z             {
2026-06-21T11:53:56.0577319Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T11:53:56.0577398Z               "line": 181
2026-06-21T11:53:56.0577484Z             }
2026-06-21T11:53:56.0577570Z           ]
2026-06-21T11:53:56.0577651Z         },
2026-06-21T11:53:56.0577737Z         "unit": {
2026-06-21T11:53:56.0577841Z           "complete": true,
2026-06-21T11:53:56.0577924Z           "evidence": [
2026-06-21T11:53:56.0578005Z             {
2026-06-21T11:53:56.0578132Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0578224Z               "line": 999
2026-06-21T11:53:56.0578299Z             },
2026-06-21T11:53:56.0578390Z             {
2026-06-21T11:53:56.0578505Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0578600Z               "line": 1016
2026-06-21T11:53:56.0578681Z             },
2026-06-21T11:53:56.0578762Z             {
2026-06-21T11:53:56.0578887Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0579048Z               "line": 1024
2026-06-21T11:53:56.0579140Z             },
2026-06-21T11:53:56.0579226Z             {
2026-06-21T11:53:56.0579339Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0579425Z               "line": 1048
2026-06-21T11:53:56.0579507Z             },
2026-06-21T11:53:56.0579610Z             {
2026-06-21T11:53:56.0579742Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0579829Z               "line": 1499
2026-06-21T11:53:56.0579913Z             },
2026-06-21T11:53:56.0579994Z             {
2026-06-21T11:53:56.0580108Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0580194Z               "line": 347
2026-06-21T11:53:56.0580270Z             },
2026-06-21T11:53:56.0580356Z             {
2026-06-21T11:53:56.0580467Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0580552Z               "line": 370
2026-06-21T11:53:56.0580632Z             },
2026-06-21T11:53:56.0580718Z             {
2026-06-21T11:53:56.0580824Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0580914Z               "line": 407
2026-06-21T11:53:56.0580990Z             },
2026-06-21T11:53:56.0581072Z             {
2026-06-21T11:53:56.0581185Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0581367Z               "line": 431
2026-06-21T11:53:56.0581453Z             },
2026-06-21T11:53:56.0581624Z             {
2026-06-21T11:53:56.0581735Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0581824Z               "line": 483
2026-06-21T11:53:56.0581910Z             },
2026-06-21T11:53:56.0581997Z             {
2026-06-21T11:53:56.0582107Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0582196Z               "line": 499
2026-06-21T11:53:56.0582273Z             },
2026-06-21T11:53:56.0582355Z             {
2026-06-21T11:53:56.0582463Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0582549Z               "line": 514
2026-06-21T11:53:56.0582634Z             },
2026-06-21T11:53:56.0582716Z             {
2026-06-21T11:53:56.0582825Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0582906Z               "line": 531
2026-06-21T11:53:56.0582992Z             }
2026-06-21T11:53:56.0583078Z           ]
2026-06-21T11:53:56.0583154Z         }
2026-06-21T11:53:56.0583239Z       }
2026-06-21T11:53:56.0583327Z     },
2026-06-21T11:53:56.0583412Z     {
2026-06-21T11:53:56.0583492Z       "id": "REQ-MESH-3",
2026-06-21T11:53:56.0585157Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T11:53:56.0585258Z       "requiredStages": [
2026-06-21T11:53:56.0585359Z         "impl",
2026-06-21T11:53:56.0585467Z         "unit",
2026-06-21T11:53:56.0585564Z         "int"
2026-06-21T11:53:56.0585650Z       ],
2026-06-21T11:53:56.0585744Z       "stages": {
2026-06-21T11:53:56.0585825Z         "doc": {
2026-06-21T11:53:56.0585931Z           "complete": false,
2026-06-21T11:53:56.0586026Z           "evidence": []
2026-06-21T11:53:56.0586111Z         },
2026-06-21T11:53:56.0586199Z         "impl": {
2026-06-21T11:53:56.0586293Z           "complete": true,
2026-06-21T11:53:56.0586388Z           "evidence": [
2026-06-21T11:53:56.0586469Z             {
2026-06-21T11:53:56.0586598Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0586684Z               "line": 641
2026-06-21T11:53:56.0586769Z             }
2026-06-21T11:53:56.0586856Z           ]
2026-06-21T11:53:56.0586937Z         },
2026-06-21T11:53:56.0587023Z         "int": {
2026-06-21T11:53:56.0587118Z           "complete": true,
2026-06-21T11:53:56.0587200Z           "evidence": [
2026-06-21T11:53:56.0587284Z             {
2026-06-21T11:53:56.0587404Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T11:53:56.0587510Z               "line": 373
2026-06-21T11:53:56.0587590Z             },
2026-06-21T11:53:56.0587684Z             {
2026-06-21T11:53:56.0587789Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T11:53:56.0587874Z               "line": 436
2026-06-21T11:53:56.0587954Z             }
2026-06-21T11:53:56.0588039Z           ]
2026-06-21T11:53:56.0588126Z         },
2026-06-21T11:53:56.0588207Z         "unit": {
2026-06-21T11:53:56.0588302Z           "complete": true,
2026-06-21T11:53:56.0588387Z           "evidence": [
2026-06-21T11:53:56.0588469Z             {
2026-06-21T11:53:56.0588579Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.0588659Z               "line": 910
2026-06-21T11:53:56.0588746Z             }
2026-06-21T11:53:56.0588827Z           ]
2026-06-21T11:53:56.0588908Z         }
2026-06-21T11:53:56.0589065Z       }
2026-06-21T11:53:56.0589151Z     },
2026-06-21T11:53:56.0589227Z     {
2026-06-21T11:53:56.0589428Z       "id": "REQ-MESH-4",
2026-06-21T11:53:56.0591622Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T11:53:56.0591826Z       "requiredStages": [
2026-06-21T11:53:56.0591907Z         "impl",
2026-06-21T11:53:56.0591990Z         "unit",
2026-06-21T11:53:56.0592074Z         "int"
2026-06-21T11:53:56.0592170Z       ],
2026-06-21T11:53:56.0592257Z       "stages": {
2026-06-21T11:53:56.0592343Z         "doc": {
2026-06-21T11:53:56.0592461Z           "complete": false,
2026-06-21T11:53:56.0592557Z           "evidence": []
2026-06-21T11:53:56.0592648Z         },
2026-06-21T11:53:56.0592732Z         "impl": {
2026-06-21T11:53:56.0592828Z           "complete": true,
2026-06-21T11:53:56.0592915Z           "evidence": [
2026-06-21T11:53:56.0593000Z             {
2026-06-21T11:53:56.0593128Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T11:53:56.0593223Z               "line": 33
2026-06-21T11:53:56.0593305Z             },
2026-06-21T11:53:56.0593390Z             {
2026-06-21T11:53:56.0593523Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0593610Z               "line": 68
2026-06-21T11:53:56.0593695Z             },
2026-06-21T11:53:56.0593781Z             {
2026-06-21T11:53:56.0593906Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0594001Z               "line": 111
2026-06-21T11:53:56.0594081Z             },
2026-06-21T11:53:56.0594163Z             {
2026-06-21T11:53:56.0594291Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0594377Z               "line": 462
2026-06-21T11:53:56.0594462Z             },
2026-06-21T11:53:56.0594550Z             {
2026-06-21T11:53:56.0594673Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0594754Z               "line": 711
2026-06-21T11:53:56.0594836Z             },
2026-06-21T11:53:56.0594911Z             {
2026-06-21T11:53:56.0595030Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0595121Z               "line": 725
2026-06-21T11:53:56.0595203Z             },
2026-06-21T11:53:56.0595297Z             {
2026-06-21T11:53:56.0595415Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.0595506Z               "line": 132
2026-06-21T11:53:56.0595590Z             },
2026-06-21T11:53:56.0595680Z             {
2026-06-21T11:53:56.0595804Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T11:53:56.0595891Z               "line": 26
2026-06-21T11:53:56.0595981Z             },
2026-06-21T11:53:56.0598623Z             {
2026-06-21T11:53:56.0598791Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T11:53:56.0598880Z               "line": 97
2026-06-21T11:53:56.0599053Z             },
2026-06-21T11:53:56.0599139Z             {
2026-06-21T11:53:56.0599257Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T11:53:56.0599349Z               "line": 119
2026-06-21T11:53:56.0599429Z             },
2026-06-21T11:53:56.0599515Z             {
2026-06-21T11:53:56.0599625Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0599711Z               "line": 82
2026-06-21T11:53:56.0599797Z             },
2026-06-21T11:53:56.0599877Z             {
2026-06-21T11:53:56.0600007Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0600231Z               "line": 111
2026-06-21T11:53:56.0600317Z             },
2026-06-21T11:53:56.0600474Z             {
2026-06-21T11:53:56.0600589Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0600675Z               "line": 232
2026-06-21T11:53:56.0600754Z             },
2026-06-21T11:53:56.0600835Z             {
2026-06-21T11:53:56.0600944Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0601034Z               "line": 245
2026-06-21T11:53:56.0601118Z             },
2026-06-21T11:53:56.0601204Z             {
2026-06-21T11:53:56.0601314Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0601405Z               "line": 4665
2026-06-21T11:53:56.0601490Z             }
2026-06-21T11:53:56.0601558Z           ]
2026-06-21T11:53:56.0601639Z         },
2026-06-21T11:53:56.0601724Z         "int": {
2026-06-21T11:53:56.0601824Z           "complete": true,
2026-06-21T11:53:56.0601906Z           "evidence": [
2026-06-21T11:53:56.0602001Z             {
2026-06-21T11:53:56.0602115Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T11:53:56.0602211Z               "line": 98
2026-06-21T11:53:56.0602301Z             },
2026-06-21T11:53:56.0602377Z             {
2026-06-21T11:53:56.0602502Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T11:53:56.0602597Z               "line": 140
2026-06-21T11:53:56.0602669Z             }
2026-06-21T11:53:56.0602749Z           ]
2026-06-21T11:53:56.0602836Z         },
2026-06-21T11:53:56.0602917Z         "unit": {
2026-06-21T11:53:56.0603002Z           "complete": true,
2026-06-21T11:53:56.0603093Z           "evidence": [
2026-06-21T11:53:56.0603180Z             {
2026-06-21T11:53:56.0603311Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T11:53:56.0603403Z               "line": 178
2026-06-21T11:53:56.0603485Z             },
2026-06-21T11:53:56.0603570Z             {
2026-06-21T11:53:56.0603688Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T11:53:56.0603783Z               "line": 242
2026-06-21T11:53:56.0603869Z             },
2026-06-21T11:53:56.0603959Z             {
2026-06-21T11:53:56.0604078Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0604161Z               "line": 1079
2026-06-21T11:53:56.0604242Z             },
2026-06-21T11:53:56.0604317Z             {
2026-06-21T11:53:56.0604437Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0604527Z               "line": 1109
2026-06-21T11:53:56.0604612Z             },
2026-06-21T11:53:56.0604693Z             {
2026-06-21T11:53:56.0604814Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T11:53:56.0604899Z               "line": 1129
2026-06-21T11:53:56.0604984Z             },
2026-06-21T11:53:56.0605062Z             {
2026-06-21T11:53:56.0605194Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T11:53:56.0605280Z               "line": 602
2026-06-21T11:53:56.0605376Z             },
2026-06-21T11:53:56.0605458Z             {
2026-06-21T11:53:56.0605576Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T11:53:56.0605662Z               "line": 148
2026-06-21T11:53:56.0605749Z             },
2026-06-21T11:53:56.0605833Z             {
2026-06-21T11:53:56.0605942Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T11:53:56.0606027Z               "line": 169
2026-06-21T11:53:56.0606108Z             },
2026-06-21T11:53:56.0606197Z             {
2026-06-21T11:53:56.0606311Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T11:53:56.0606398Z               "line": 181
2026-06-21T11:53:56.0606484Z             },
2026-06-21T11:53:56.0606564Z             {
2026-06-21T11:53:56.0606684Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T11:53:56.0606775Z               "line": 202
2026-06-21T11:53:56.0606864Z             },
2026-06-21T11:53:56.0606945Z             {
2026-06-21T11:53:56.0607132Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0607231Z               "line": 375
2026-06-21T11:53:56.0607371Z             },
2026-06-21T11:53:56.0607451Z             {
2026-06-21T11:53:56.0607565Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0607653Z               "line": 407
2026-06-21T11:53:56.0607742Z             },
2026-06-21T11:53:56.0607823Z             {
2026-06-21T11:53:56.0607924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0608019Z               "line": 10052
2026-06-21T11:53:56.0608099Z             }
2026-06-21T11:53:56.0608176Z           ]
2026-06-21T11:53:56.0608258Z         }
2026-06-21T11:53:56.0608344Z       }
2026-06-21T11:53:56.0608428Z     },
2026-06-21T11:53:56.0608510Z     {
2026-06-21T11:53:56.0608602Z       "id": "REQ-MESH-5",
2026-06-21T11:53:56.0610127Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T11:53:56.0610238Z       "requiredStages": [
2026-06-21T11:53:56.0610319Z         "impl",
2026-06-21T11:53:56.0610404Z         "unit"
2026-06-21T11:53:56.0610485Z       ],
2026-06-21T11:53:56.0610572Z       "stages": {
2026-06-21T11:53:56.0610652Z         "doc": {
2026-06-21T11:53:56.0610752Z           "complete": false,
2026-06-21T11:53:56.0610849Z           "evidence": []
2026-06-21T11:53:56.0610929Z         },
2026-06-21T11:53:56.0611014Z         "impl": {
2026-06-21T11:53:56.0611101Z           "complete": true,
2026-06-21T11:53:56.0611192Z           "evidence": [
2026-06-21T11:53:56.0611277Z             {
2026-06-21T11:53:56.0611404Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0611504Z               "line": 61
2026-06-21T11:53:56.0611585Z             },
2026-06-21T11:53:56.0611678Z             {
2026-06-21T11:53:56.0611798Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0611879Z               "line": 109
2026-06-21T11:53:56.0611965Z             },
2026-06-21T11:53:56.0612045Z             {
2026-06-21T11:53:56.0612171Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0612252Z               "line": 104
2026-06-21T11:53:56.0612341Z             },
2026-06-21T11:53:56.0612423Z             {
2026-06-21T11:53:56.0612546Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.0612641Z               "line": 105
2026-06-21T11:53:56.0612723Z             },
2026-06-21T11:53:56.0612805Z             {
2026-06-21T11:53:56.0612924Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0613014Z               "line": 85
2026-06-21T11:53:56.0613096Z             },
2026-06-21T11:53:56.0613176Z             {
2026-06-21T11:53:56.0613304Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0613382Z               "line": 250
2026-06-21T11:53:56.0613458Z             },
2026-06-21T11:53:56.0613542Z             {
2026-06-21T11:53:56.0613667Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0613754Z               "line": 314
2026-06-21T11:53:56.0613834Z             },
2026-06-21T11:53:56.0613920Z             {
2026-06-21T11:53:56.0614040Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0614126Z               "line": 767
2026-06-21T11:53:56.0614205Z             },
2026-06-21T11:53:56.0614295Z             {
2026-06-21T11:53:56.0614401Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0614487Z               "line": 101
2026-06-21T11:53:56.0614572Z             },
2026-06-21T11:53:56.0614653Z             {
2026-06-21T11:53:56.0614872Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0614958Z               "line": 193
2026-06-21T11:53:56.0615116Z             }
2026-06-21T11:53:56.0615201Z           ]
2026-06-21T11:53:56.0615292Z         },
2026-06-21T11:53:56.0615379Z         "int": {
2026-06-21T11:53:56.0615474Z           "complete": false,
2026-06-21T11:53:56.0615559Z           "evidence": []
2026-06-21T11:53:56.0615641Z         },
2026-06-21T11:53:56.0615735Z         "unit": {
2026-06-21T11:53:56.0615826Z           "complete": true,
2026-06-21T11:53:56.0615917Z           "evidence": [
2026-06-21T11:53:56.0616004Z             {
2026-06-21T11:53:56.0616131Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0616222Z               "line": 1009
2026-06-21T11:53:56.0616304Z             },
2026-06-21T11:53:56.0616393Z             {
2026-06-21T11:53:56.0616497Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T11:53:56.0616592Z               "line": 462
2026-06-21T11:53:56.0616678Z             }
2026-06-21T11:53:56.0616752Z           ]
2026-06-21T11:53:56.0616833Z         }
2026-06-21T11:53:56.0616924Z       }
2026-06-21T11:53:56.0617006Z     },
2026-06-21T11:53:56.0617091Z     {
2026-06-21T11:53:56.0617191Z       "id": "REQ-MESH-6",
2026-06-21T11:53:56.0618431Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T11:53:56.0618523Z       "requiredStages": [
2026-06-21T11:53:56.0618607Z         "impl",
2026-06-21T11:53:56.0618688Z         "unit"
2026-06-21T11:53:56.0618774Z       ],
2026-06-21T11:53:56.0618862Z       "stages": {
2026-06-21T11:53:56.0619022Z         "doc": {
2026-06-21T11:53:56.0619123Z           "complete": false,
2026-06-21T11:53:56.0619205Z           "evidence": []
2026-06-21T11:53:56.0619289Z         },
2026-06-21T11:53:56.0619374Z         "impl": {
2026-06-21T11:53:56.0619459Z           "complete": true,
2026-06-21T11:53:56.0619550Z           "evidence": [
2026-06-21T11:53:56.0619634Z             {
2026-06-21T11:53:56.0619733Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0619811Z               "line": 4181
2026-06-21T11:53:56.0619892Z             }
2026-06-21T11:53:56.0619973Z           ]
2026-06-21T11:53:56.0620053Z         },
2026-06-21T11:53:56.0620136Z         "int": {
2026-06-21T11:53:56.0620230Z           "complete": false,
2026-06-21T11:53:56.0620325Z           "evidence": []
2026-06-21T11:53:56.0620402Z         },
2026-06-21T11:53:56.0620493Z         "unit": {
2026-06-21T11:53:56.0620574Z           "complete": true,
2026-06-21T11:53:56.0620659Z           "evidence": [
2026-06-21T11:53:56.0620745Z             {
2026-06-21T11:53:56.0620850Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0620945Z               "line": 10602
2026-06-21T11:53:56.0621021Z             },
2026-06-21T11:53:56.0621094Z             {
2026-06-21T11:53:56.0621198Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0621284Z               "line": 10629
2026-06-21T11:53:56.0621365Z             },
2026-06-21T11:53:56.0621451Z             {
2026-06-21T11:53:56.0621546Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0621622Z               "line": 10653
2026-06-21T11:53:56.0621709Z             }
2026-06-21T11:53:56.0621795Z           ]
2026-06-21T11:53:56.0621879Z         }
2026-06-21T11:53:56.0621969Z       }
2026-06-21T11:53:56.0622051Z     },
2026-06-21T11:53:56.0622126Z     {
2026-06-21T11:53:56.0622211Z       "id": "REQ-MIGRATE-1",
2026-06-21T11:53:56.0622377Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T11:53:56.0622469Z       "requiredStages": [],
2026-06-21T11:53:56.0622544Z       "stages": {
2026-06-21T11:53:56.0622750Z         "doc": {
2026-06-21T11:53:56.0622840Z           "complete": false,
2026-06-21T11:53:56.0623012Z           "evidence": []
2026-06-21T11:53:56.0623098Z         },
2026-06-21T11:53:56.0623183Z         "impl": {
2026-06-21T11:53:56.0623264Z           "complete": false,
2026-06-21T11:53:56.0623350Z           "evidence": []
2026-06-21T11:53:56.0623431Z         },
2026-06-21T11:53:56.0623512Z         "int": {
2026-06-21T11:53:56.0623607Z           "complete": false,
2026-06-21T11:53:56.0623694Z           "evidence": []
2026-06-21T11:53:56.0623779Z         },
2026-06-21T11:53:56.0623864Z         "unit": {
2026-06-21T11:53:56.0623961Z           "complete": false,
2026-06-21T11:53:56.0624056Z           "evidence": []
2026-06-21T11:53:56.0624127Z         }
2026-06-21T11:53:56.0624213Z       }
2026-06-21T11:53:56.0624295Z     },
2026-06-21T11:53:56.0624375Z     {
2026-06-21T11:53:56.0624461Z       "id": "REQ-MSG-1",
2026-06-21T11:53:56.0624908Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T11:53:56.0625009Z       "requiredStages": [
2026-06-21T11:53:56.0625094Z         "impl",
2026-06-21T11:53:56.0625184Z         "unit",
2026-06-21T11:53:56.0625271Z         "int"
2026-06-21T11:53:56.0625352Z       ],
2026-06-21T11:53:56.0625437Z       "stages": {
2026-06-21T11:53:56.0625518Z         "doc": {
2026-06-21T11:53:56.0625615Z           "complete": false,
2026-06-21T11:53:56.0625691Z           "evidence": []
2026-06-21T11:53:56.0625770Z         },
2026-06-21T11:53:56.0625857Z         "impl": {
2026-06-21T11:53:56.0625939Z           "complete": true,
2026-06-21T11:53:56.0626029Z           "evidence": [
2026-06-21T11:53:56.0626114Z             {
2026-06-21T11:53:56.0626230Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0626310Z               "line": 28
2026-06-21T11:53:56.0626400Z             },
2026-06-21T11:53:56.0626482Z             {
2026-06-21T11:53:56.0626597Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0626691Z               "line": 94
2026-06-21T11:53:56.0626777Z             },
2026-06-21T11:53:56.0626860Z             {
2026-06-21T11:53:56.0626972Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0627062Z               "line": 127
2026-06-21T11:53:56.0627143Z             },
2026-06-21T11:53:56.0627224Z             {
2026-06-21T11:53:56.0627332Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0627421Z               "line": 149
2026-06-21T11:53:56.0627508Z             },
2026-06-21T11:53:56.0627586Z             {
2026-06-21T11:53:56.0627703Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0627789Z               "line": 174
2026-06-21T11:53:56.0627876Z             },
2026-06-21T11:53:56.0627961Z             {
2026-06-21T11:53:56.0628065Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T11:53:56.0628167Z               "line": 18
2026-06-21T11:53:56.0628248Z             },
2026-06-21T11:53:56.0628342Z             {
2026-06-21T11:53:56.0628444Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:56.0628533Z               "line": 13
2026-06-21T11:53:56.0628614Z             },
2026-06-21T11:53:56.0628690Z             {
2026-06-21T11:53:56.0628801Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:56.0628886Z               "line": 62
2026-06-21T11:53:56.0629063Z             },
2026-06-21T11:53:56.0629144Z             {
2026-06-21T11:53:56.0629253Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0629349Z               "line": 13
2026-06-21T11:53:56.0629431Z             }
2026-06-21T11:53:56.0629510Z           ]
2026-06-21T11:53:56.0629597Z         },
2026-06-21T11:53:56.0629679Z         "int": {
2026-06-21T11:53:56.0629765Z           "complete": true,
2026-06-21T11:53:56.0629849Z           "evidence": [
2026-06-21T11:53:56.0629939Z             {
2026-06-21T11:53:56.0630175Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T11:53:56.0630351Z               "line": 9
2026-06-21T11:53:56.0630433Z             },
2026-06-21T11:53:56.0630518Z             {
2026-06-21T11:53:56.0630647Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T11:53:56.0630729Z               "line": 56
2026-06-21T11:53:56.0630814Z             },
2026-06-21T11:53:56.0630895Z             {
2026-06-21T11:53:56.0631020Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T11:53:56.0631100Z               "line": 113
2026-06-21T11:53:56.0631190Z             }
2026-06-21T11:53:56.0631272Z           ]
2026-06-21T11:53:56.0631354Z         },
2026-06-21T11:53:56.0631443Z         "unit": {
2026-06-21T11:53:56.0631529Z           "complete": true,
2026-06-21T11:53:56.0631620Z           "evidence": [
2026-06-21T11:53:56.0631701Z             {
2026-06-21T11:53:56.0631820Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0631911Z               "line": 203
2026-06-21T11:53:56.0631993Z             },
2026-06-21T11:53:56.0632077Z             {
2026-06-21T11:53:56.0632183Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0632274Z               "line": 232
2026-06-21T11:53:56.0632350Z             },
2026-06-21T11:53:56.0632430Z             {
2026-06-21T11:53:56.0632534Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0632625Z               "line": 277
2026-06-21T11:53:56.0632705Z             },
2026-06-21T11:53:56.0632785Z             {
2026-06-21T11:53:56.0632899Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0632991Z               "line": 300
2026-06-21T11:53:56.0633080Z             },
2026-06-21T11:53:56.0633156Z             {
2026-06-21T11:53:56.0633267Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T11:53:56.0633362Z               "line": 325
2026-06-21T11:53:56.0633447Z             },
2026-06-21T11:53:56.0633538Z             {
2026-06-21T11:53:56.0633639Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T11:53:56.0633734Z               "line": 204
2026-06-21T11:53:56.0633819Z             },
2026-06-21T11:53:56.0633901Z             {
2026-06-21T11:53:56.0634019Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T11:53:56.0634096Z               "line": 237
2026-06-21T11:53:56.0634172Z             },
2026-06-21T11:53:56.0634263Z             {
2026-06-21T11:53:56.0634363Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T11:53:56.0634458Z               "line": 251
2026-06-21T11:53:56.0634540Z             },
2026-06-21T11:53:56.0634620Z             {
2026-06-21T11:53:56.0634725Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T11:53:56.0634812Z               "line": 263
2026-06-21T11:53:56.0634893Z             },
2026-06-21T11:53:56.0634978Z             {
2026-06-21T11:53:56.0635083Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:56.0635184Z               "line": 162
2026-06-21T11:53:56.0635264Z             },
2026-06-21T11:53:56.0635358Z             {
2026-06-21T11:53:56.0635468Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T11:53:56.0635555Z               "line": 242
2026-06-21T11:53:56.0635640Z             },
2026-06-21T11:53:56.0635725Z             {
2026-06-21T11:53:56.0635826Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0635917Z               "line": 134
2026-06-21T11:53:56.0635992Z             },
2026-06-21T11:53:56.0636073Z             {
2026-06-21T11:53:56.0636184Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0636275Z               "line": 153
2026-06-21T11:53:56.0636364Z             }
2026-06-21T11:53:56.0636446Z           ]
2026-06-21T11:53:56.0636532Z         }
2026-06-21T11:53:56.0636618Z       }
2026-06-21T11:53:56.0636698Z     },
2026-06-21T11:53:56.0636785Z     {
2026-06-21T11:53:56.0636870Z       "id": "REQ-MSG-2",
2026-06-21T11:53:56.0637227Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T11:53:56.0637410Z       "requiredStages": [
2026-06-21T11:53:56.0637500Z         "impl",
2026-06-21T11:53:56.0637575Z         "unit"
2026-06-21T11:53:56.0637664Z       ],
2026-06-21T11:53:56.0637751Z       "stages": {
2026-06-21T11:53:56.0637831Z         "doc": {
2026-06-21T11:53:56.0637935Z           "complete": false,
2026-06-21T11:53:56.0638016Z           "evidence": []
2026-06-21T11:53:56.0638097Z         },
2026-06-21T11:53:56.0638183Z         "impl": {
2026-06-21T11:53:56.0638278Z           "complete": true,
2026-06-21T11:53:56.0638355Z           "evidence": [
2026-06-21T11:53:56.0638441Z             {
2026-06-21T11:53:56.0638549Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0638635Z               "line": 11
2026-06-21T11:53:56.0638727Z             },
2026-06-21T11:53:56.0638808Z             {
2026-06-21T11:53:56.0638907Z               "path": "crates/spt/src/main.rs",
2026-06-21T11:53:56.0639075Z               "line": 8
2026-06-21T11:53:56.0639165Z             }
2026-06-21T11:53:56.0639255Z           ]
2026-06-21T11:53:56.0639342Z         },
2026-06-21T11:53:56.0639441Z         "int": {
2026-06-21T11:53:56.0639532Z           "complete": false,
2026-06-21T11:53:56.0639619Z           "evidence": []
2026-06-21T11:53:56.0639705Z         },
2026-06-21T11:53:56.0639784Z         "unit": {
2026-06-21T11:53:56.0639880Z           "complete": true,
2026-06-21T11:53:56.0639962Z           "evidence": [
2026-06-21T11:53:56.0640047Z             {
2026-06-21T11:53:56.0640157Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0640249Z               "line": 7717
2026-06-21T11:53:56.0640330Z             },
2026-06-21T11:53:56.0640404Z             {
2026-06-21T11:53:56.0640513Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0640599Z               "line": 7759
2026-06-21T11:53:56.0640694Z             },
2026-06-21T11:53:56.0640773Z             {
2026-06-21T11:53:56.0640878Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0640960Z               "line": 7808
2026-06-21T11:53:56.0641046Z             },
2026-06-21T11:53:56.0641126Z             {
2026-06-21T11:53:56.0641226Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0641322Z               "line": 7831
2026-06-21T11:53:56.0641393Z             },
2026-06-21T11:53:56.0641479Z             {
2026-06-21T11:53:56.0641580Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0641670Z               "line": 9807
2026-06-21T11:53:56.0641755Z             },
2026-06-21T11:53:56.0641832Z             {
2026-06-21T11:53:56.0641923Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0642008Z               "line": 9816
2026-06-21T11:53:56.0642089Z             },
2026-06-21T11:53:56.0642171Z             {
2026-06-21T11:53:56.0642276Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0642370Z               "line": 9830
2026-06-21T11:53:56.0642451Z             }
2026-06-21T11:53:56.0642534Z           ]
2026-06-21T11:53:56.0642614Z         }
2026-06-21T11:53:56.0642709Z       }
2026-06-21T11:53:56.0642791Z     },
2026-06-21T11:53:56.0642877Z     {
2026-06-21T11:53:56.0642962Z       "id": "REQ-MSG-3",
2026-06-21T11:53:56.0643340Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T11:53:56.0643440Z       "requiredStages": [
2026-06-21T11:53:56.0643521Z         "impl",
2026-06-21T11:53:56.0643612Z         "unit",
2026-06-21T11:53:56.0643693Z         "int"
2026-06-21T11:53:56.0643778Z       ],
2026-06-21T11:53:56.0643860Z       "stages": {
2026-06-21T11:53:56.0643946Z         "doc": {
2026-06-21T11:53:56.0644040Z           "complete": false,
2026-06-21T11:53:56.0644128Z           "evidence": []
2026-06-21T11:53:56.0644218Z         },
2026-06-21T11:53:56.0644298Z         "impl": {
2026-06-21T11:53:56.0644389Z           "complete": true,
2026-06-21T11:53:56.0644575Z           "evidence": [
2026-06-21T11:53:56.0644656Z             {
2026-06-21T11:53:56.0644861Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T11:53:56.0644947Z               "line": 19
2026-06-21T11:53:56.0645038Z             },
2026-06-21T11:53:56.0645124Z             {
2026-06-21T11:53:56.0645237Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0645323Z               "line": 21
2026-06-21T11:53:56.0645406Z             },
2026-06-21T11:53:56.0645491Z             {
2026-06-21T11:53:56.0645591Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0645677Z               "line": 48
2026-06-21T11:53:56.0645768Z             },
2026-06-21T11:53:56.0645848Z             {
2026-06-21T11:53:56.0645961Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0646052Z               "line": 174
2026-06-21T11:53:56.0646134Z             }
2026-06-21T11:53:56.0646215Z           ]
2026-06-21T11:53:56.0646314Z         },
2026-06-21T11:53:56.0646406Z         "int": {
2026-06-21T11:53:56.0646496Z           "complete": true,
2026-06-21T11:53:56.0646595Z           "evidence": [
2026-06-21T11:53:56.0646678Z             {
2026-06-21T11:53:56.0646816Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T11:53:56.0646905Z               "line": 10
2026-06-21T11:53:56.0646992Z             },
2026-06-21T11:53:56.0647078Z             {
2026-06-21T11:53:56.0647210Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T11:53:56.0647297Z               "line": 56
2026-06-21T11:53:56.0647383Z             }
2026-06-21T11:53:56.0647463Z           ]
2026-06-21T11:53:56.0647549Z         },
2026-06-21T11:53:56.0647646Z         "unit": {
2026-06-21T11:53:56.0647736Z           "complete": true,
2026-06-21T11:53:56.0647816Z           "evidence": [
2026-06-21T11:53:56.0647903Z             {
2026-06-21T11:53:56.0648008Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0648111Z               "line": 228
2026-06-21T11:53:56.0648192Z             },
2026-06-21T11:53:56.0648273Z             {
2026-06-21T11:53:56.0648391Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0648471Z               "line": 247
2026-06-21T11:53:56.0648551Z             },
2026-06-21T11:53:56.0648633Z             {
2026-06-21T11:53:56.0648743Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0648828Z               "line": 270
2026-06-21T11:53:56.0648915Z             }
2026-06-21T11:53:56.0649086Z           ]
2026-06-21T11:53:56.0649157Z         }
2026-06-21T11:53:56.0649239Z       }
2026-06-21T11:53:56.0649316Z     },
2026-06-21T11:53:56.0649410Z     {
2026-06-21T11:53:56.0649496Z       "id": "REQ-MSG-4",
2026-06-21T11:53:56.0650307Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T11:53:56.0650416Z       "requiredStages": [
2026-06-21T11:53:56.0650504Z         "impl",
2026-06-21T11:53:56.0650589Z         "unit",
2026-06-21T11:53:56.0650673Z         "int"
2026-06-21T11:53:56.0650760Z       ],
2026-06-21T11:53:56.0650837Z       "stages": {
2026-06-21T11:53:56.0650923Z         "doc": {
2026-06-21T11:53:56.0651021Z           "complete": false,
2026-06-21T11:53:56.0651106Z           "evidence": []
2026-06-21T11:53:56.0651193Z         },
2026-06-21T11:53:56.0651277Z         "impl": {
2026-06-21T11:53:56.0651366Z           "complete": true,
2026-06-21T11:53:56.0651453Z           "evidence": [
2026-06-21T11:53:56.0651544Z             {
2026-06-21T11:53:56.0651648Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0651738Z               "line": 19
2026-06-21T11:53:56.0651821Z             },
2026-06-21T11:53:56.0651901Z             {
2026-06-21T11:53:56.0652024Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0652240Z               "line": 46
2026-06-21T11:53:56.0652320Z             },
2026-06-21T11:53:56.0652488Z             {
2026-06-21T11:53:56.0652597Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0652692Z               "line": 532
2026-06-21T11:53:56.0652770Z             },
2026-06-21T11:53:56.0652854Z             {
2026-06-21T11:53:56.0652969Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0653051Z               "line": 3110
2026-06-21T11:53:56.0653137Z             }
2026-06-21T11:53:56.0653221Z           ]
2026-06-21T11:53:56.0653298Z         },
2026-06-21T11:53:56.0653385Z         "int": {
2026-06-21T11:53:56.0653475Z           "complete": true,
2026-06-21T11:53:56.0653564Z           "evidence": [
2026-06-21T11:53:56.0653644Z             {
2026-06-21T11:53:56.0653769Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T11:53:56.0653857Z               "line": 98
2026-06-21T11:53:56.0653938Z             },
2026-06-21T11:53:56.0654019Z             {
2026-06-21T11:53:56.0654144Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T11:53:56.0654243Z               "line": 128
2026-06-21T11:53:56.0654329Z             }
2026-06-21T11:53:56.0654416Z           ]
2026-06-21T11:53:56.0654497Z         },
2026-06-21T11:53:56.0654591Z         "unit": {
2026-06-21T11:53:56.0654683Z           "complete": true,
2026-06-21T11:53:56.0654763Z           "evidence": [
2026-06-21T11:53:56.0654849Z             {
2026-06-21T11:53:56.0654949Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0655045Z               "line": 68
2026-06-21T11:53:56.0655126Z             },
2026-06-21T11:53:56.0655216Z             {
2026-06-21T11:53:56.0655317Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0655402Z               "line": 79
2026-06-21T11:53:56.0655493Z             },
2026-06-21T11:53:56.0655578Z             {
2026-06-21T11:53:56.0655689Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0655778Z               "line": 90
2026-06-21T11:53:56.0655865Z             },
2026-06-21T11:53:56.0655952Z             {
2026-06-21T11:53:56.0656060Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0656146Z               "line": 151
2026-06-21T11:53:56.0656228Z             }
2026-06-21T11:53:56.0656319Z           ]
2026-06-21T11:53:56.0656403Z         }
2026-06-21T11:53:56.0656493Z       }
2026-06-21T11:53:56.0656578Z     },
2026-06-21T11:53:56.0656666Z     {
2026-06-21T11:53:56.0656755Z       "id": "REQ-MSG-5",
2026-06-21T11:53:56.0657465Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T11:53:56.0657572Z       "requiredStages": [
2026-06-21T11:53:56.0657652Z         "doc",
2026-06-21T11:53:56.0657752Z         "impl",
2026-06-21T11:53:56.0657833Z         "unit"
2026-06-21T11:53:56.0657924Z       ],
2026-06-21T11:53:56.0658019Z       "stages": {
2026-06-21T11:53:56.0658100Z         "doc": {
2026-06-21T11:53:56.0658197Z           "complete": true,
2026-06-21T11:53:56.0658282Z           "evidence": [
2026-06-21T11:53:56.0658361Z             {
2026-06-21T11:53:56.0658463Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0658559Z               "line": 231
2026-06-21T11:53:56.0658643Z             }
2026-06-21T11:53:56.0658719Z           ]
2026-06-21T11:53:56.0658809Z         },
2026-06-21T11:53:56.0658890Z         "impl": {
2026-06-21T11:53:56.0659102Z           "complete": true,
2026-06-21T11:53:56.0659184Z           "evidence": [
2026-06-21T11:53:56.0659261Z             {
2026-06-21T11:53:56.0659393Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0659485Z               "line": 60
2026-06-21T11:53:56.0659575Z             },
2026-06-21T11:53:56.0659647Z             {
2026-06-21T11:53:56.0659871Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0659952Z               "line": 126
2026-06-21T11:53:56.0660128Z             },
2026-06-21T11:53:56.0660214Z             {
2026-06-21T11:53:56.0660328Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0660414Z               "line": 135
2026-06-21T11:53:56.0660486Z             },
2026-06-21T11:53:56.0660566Z             {
2026-06-21T11:53:56.0660681Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0660772Z               "line": 149
2026-06-21T11:53:56.0660858Z             },
2026-06-21T11:53:56.0660939Z             {
2026-06-21T11:53:56.0661039Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0661121Z               "line": 178
2026-06-21T11:53:56.0661205Z             },
2026-06-21T11:53:56.0661286Z             {
2026-06-21T11:53:56.0661388Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0661474Z               "line": 2802
2026-06-21T11:53:56.0661562Z             }
2026-06-21T11:53:56.0661652Z           ]
2026-06-21T11:53:56.0661729Z         },
2026-06-21T11:53:56.0661823Z         "int": {
2026-06-21T11:53:56.0661917Z           "complete": true,
2026-06-21T11:53:56.0661998Z           "evidence": [
2026-06-21T11:53:56.0662090Z             {
2026-06-21T11:53:56.0662208Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T11:53:56.0662284Z               "line": 19
2026-06-21T11:53:56.0662371Z             }
2026-06-21T11:53:56.0662456Z           ]
2026-06-21T11:53:56.0662541Z         },
2026-06-21T11:53:56.0662627Z         "unit": {
2026-06-21T11:53:56.0662724Z           "complete": true,
2026-06-21T11:53:56.0662815Z           "evidence": [
2026-06-21T11:53:56.0662894Z             {
2026-06-21T11:53:56.0663000Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0663090Z               "line": 192
2026-06-21T11:53:56.0663181Z             },
2026-06-21T11:53:56.0663262Z             {
2026-06-21T11:53:56.0663391Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T11:53:56.0663476Z               "line": 154
2026-06-21T11:53:56.0663577Z             },
2026-06-21T11:53:56.0663659Z             {
2026-06-21T11:53:56.0663767Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0663853Z               "line": 122
2026-06-21T11:53:56.0663936Z             },
2026-06-21T11:53:56.0664017Z             {
2026-06-21T11:53:56.0664134Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0666725Z               "line": 452
2026-06-21T11:53:56.0666836Z             },
2026-06-21T11:53:56.0666926Z             {
2026-06-21T11:53:56.0667053Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0667143Z               "line": 501
2026-06-21T11:53:56.0667230Z             },
2026-06-21T11:53:56.0667306Z             {
2026-06-21T11:53:56.0667425Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0667511Z               "line": 517
2026-06-21T11:53:56.0667616Z             },
2026-06-21T11:53:56.0667701Z             {
2026-06-21T11:53:56.0667822Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.0667912Z               "line": 536
2026-06-21T11:53:56.0667992Z             },
2026-06-21T11:53:56.0668074Z             {
2026-06-21T11:53:56.0668174Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0668269Z               "line": 7660
2026-06-21T11:53:56.0668354Z             }
2026-06-21T11:53:56.0668437Z           ]
2026-06-21T11:53:56.0668518Z         }
2026-06-21T11:53:56.0668603Z       }
2026-06-21T11:53:56.0668688Z     },
2026-06-21T11:53:56.0668771Z     {
2026-06-21T11:53:56.0668861Z       "id": "REQ-MSG-6",
2026-06-21T11:53:56.0670550Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T11:53:56.0670869Z       "requiredStages": [
2026-06-21T11:53:56.0670960Z         "doc",
2026-06-21T11:53:56.0671041Z         "impl",
2026-06-21T11:53:56.0671122Z         "unit"
2026-06-21T11:53:56.0671207Z       ],
2026-06-21T11:53:56.0671289Z       "stages": {
2026-06-21T11:53:56.0671371Z         "doc": {
2026-06-21T11:53:56.0671455Z           "complete": true,
2026-06-21T11:53:56.0671550Z           "evidence": [
2026-06-21T11:53:56.0671634Z             {
2026-06-21T11:53:56.0671733Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0671823Z               "line": 234
2026-06-21T11:53:56.0671900Z             }
2026-06-21T11:53:56.0671981Z           ]
2026-06-21T11:53:56.0672066Z         },
2026-06-21T11:53:56.0672160Z         "impl": {
2026-06-21T11:53:56.0672241Z           "complete": true,
2026-06-21T11:53:56.0672327Z           "evidence": [
2026-06-21T11:53:56.0672421Z             {
2026-06-21T11:53:56.0672548Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0672630Z               "line": 177
2026-06-21T11:53:56.0672712Z             },
2026-06-21T11:53:56.0672792Z             {
2026-06-21T11:53:56.0672912Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0672993Z               "line": 428
2026-06-21T11:53:56.0673074Z             },
2026-06-21T11:53:56.0673159Z             {
2026-06-21T11:53:56.0673289Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0673370Z               "line": 451
2026-06-21T11:53:56.0673454Z             },
2026-06-21T11:53:56.0673541Z             {
2026-06-21T11:53:56.0673651Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0673736Z               "line": 89
2026-06-21T11:53:56.0673817Z             },
2026-06-21T11:53:56.0673904Z             {
2026-06-21T11:53:56.0674022Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0674132Z               "line": 155
2026-06-21T11:53:56.0674214Z             }
2026-06-21T11:53:56.0674290Z           ]
2026-06-21T11:53:56.0674370Z         },
2026-06-21T11:53:56.0674457Z         "int": {
2026-06-21T11:53:56.0674558Z           "complete": false,
2026-06-21T11:53:56.0674642Z           "evidence": []
2026-06-21T11:53:56.0674727Z         },
2026-06-21T11:53:56.0674823Z         "unit": {
2026-06-21T11:53:56.0674904Z           "complete": true,
2026-06-21T11:53:56.0674996Z           "evidence": [
2026-06-21T11:53:56.0675077Z             {
2026-06-21T11:53:56.0675212Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0675297Z               "line": 1746
2026-06-21T11:53:56.0675382Z             },
2026-06-21T11:53:56.0675469Z             {
2026-06-21T11:53:56.0675578Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0675678Z               "line": 219
2026-06-21T11:53:56.0675759Z             }
2026-06-21T11:53:56.0675851Z           ]
2026-06-21T11:53:56.0675941Z         }
2026-06-21T11:53:56.0676026Z       }
2026-06-21T11:53:56.0676108Z     },
2026-06-21T11:53:56.0676194Z     {
2026-06-21T11:53:56.0676289Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T11:53:56.0680147Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T11:53:56.0680462Z       "requiredStages": [
2026-06-21T11:53:56.0680547Z         "doc",
2026-06-21T11:53:56.0680628Z         "impl",
2026-06-21T11:53:56.0680714Z         "unit",
2026-06-21T11:53:56.0680809Z         "int"
2026-06-21T11:53:56.0680890Z       ],
2026-06-21T11:53:56.0680972Z       "stages": {
2026-06-21T11:53:56.0681058Z         "doc": {
2026-06-21T11:53:56.0681152Z           "complete": true,
2026-06-21T11:53:56.0681254Z           "evidence": [
2026-06-21T11:53:56.0681339Z             {
2026-06-21T11:53:56.0681569Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T11:53:56.0681658Z               "line": 47
2026-06-21T11:53:56.0681744Z             }
2026-06-21T11:53:56.0681830Z           ]
2026-06-21T11:53:56.0681907Z         },
2026-06-21T11:53:56.0681997Z         "impl": {
2026-06-21T11:53:56.0682087Z           "complete": true,
2026-06-21T11:53:56.0682184Z           "evidence": [
2026-06-21T11:53:56.0682260Z             {
2026-06-21T11:53:56.0682363Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0682445Z               "line": 20
2026-06-21T11:53:56.0682527Z             },
2026-06-21T11:53:56.0682617Z             {
2026-06-21T11:53:56.0682725Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0682816Z               "line": 33
2026-06-21T11:53:56.0682897Z             },
2026-06-21T11:53:56.0682976Z             {
2026-06-21T11:53:56.0683080Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0683167Z               "line": 47
2026-06-21T11:53:56.0683252Z             },
2026-06-21T11:53:56.0683333Z             {
2026-06-21T11:53:56.0683438Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0683520Z               "line": 58
2026-06-21T11:53:56.0683606Z             },
2026-06-21T11:53:56.0683685Z             {
2026-06-21T11:53:56.0683787Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0683877Z               "line": 14
2026-06-21T11:53:56.0683954Z             },
2026-06-21T11:53:56.0684043Z             {
2026-06-21T11:53:56.0684154Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0684230Z               "line": 27
2026-06-21T11:53:56.0684315Z             },
2026-06-21T11:53:56.0684392Z             {
2026-06-21T11:53:56.0684502Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0684591Z               "line": 40
2026-06-21T11:53:56.0684678Z             },
2026-06-21T11:53:56.0684765Z             {
2026-06-21T11:53:56.0684873Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0684959Z               "line": 92
2026-06-21T11:53:56.0685041Z             },
2026-06-21T11:53:56.0685113Z             {
2026-06-21T11:53:56.0685225Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.0685316Z               "line": 143
2026-06-21T11:53:56.0685397Z             },
2026-06-21T11:53:56.0685482Z             {
2026-06-21T11:53:56.0685599Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.0685675Z               "line": 216
2026-06-21T11:53:56.0685757Z             },
2026-06-21T11:53:56.0685848Z             {
2026-06-21T11:53:56.0685957Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0686048Z               "line": 533
2026-06-21T11:53:56.0686120Z             },
2026-06-21T11:53:56.0686196Z             {
2026-06-21T11:53:56.0686392Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T11:53:56.0686477Z               "line": 78
2026-06-21T11:53:56.0686634Z             },
2026-06-21T11:53:56.0686721Z             {
2026-06-21T11:53:56.0686830Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0686911Z               "line": 3111
2026-06-21T11:53:56.0686997Z             }
2026-06-21T11:53:56.0687078Z           ]
2026-06-21T11:53:56.0687159Z         },
2026-06-21T11:53:56.0687245Z         "int": {
2026-06-21T11:53:56.0687331Z           "complete": true,
2026-06-21T11:53:56.0687416Z           "evidence": [
2026-06-21T11:53:56.0687497Z             {
2026-06-21T11:53:56.0687627Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T11:53:56.0687708Z               "line": 15
2026-06-21T11:53:56.0687787Z             }
2026-06-21T11:53:56.0687874Z           ]
2026-06-21T11:53:56.0687956Z         },
2026-06-21T11:53:56.0688037Z         "unit": {
2026-06-21T11:53:56.0688140Z           "complete": true,
2026-06-21T11:53:56.0688225Z           "evidence": [
2026-06-21T11:53:56.0688298Z             {
2026-06-21T11:53:56.0688412Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0688497Z               "line": 102
2026-06-21T11:53:56.0688583Z             },
2026-06-21T11:53:56.0688670Z             {
2026-06-21T11:53:56.0688778Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T11:53:56.0688859Z               "line": 137
2026-06-21T11:53:56.0688933Z             },
2026-06-21T11:53:56.0689103Z             {
2026-06-21T11:53:56.0689208Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0689299Z               "line": 98
2026-06-21T11:53:56.0689404Z             },
2026-06-21T11:53:56.0689484Z             {
2026-06-21T11:53:56.0689586Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0689675Z               "line": 106
2026-06-21T11:53:56.0689756Z             },
2026-06-21T11:53:56.0689833Z             {
2026-06-21T11:53:56.0689943Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0690033Z               "line": 113
2026-06-21T11:53:56.0690109Z             },
2026-06-21T11:53:56.0690186Z             {
2026-06-21T11:53:56.0690291Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T11:53:56.0690385Z               "line": 122
2026-06-21T11:53:56.0690470Z             }
2026-06-21T11:53:56.0690547Z           ]
2026-06-21T11:53:56.0690636Z         }
2026-06-21T11:53:56.0690716Z       }
2026-06-21T11:53:56.0690802Z     },
2026-06-21T11:53:56.0690888Z     {
2026-06-21T11:53:56.0691012Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T11:53:56.0695947Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T11:53:56.0696265Z       "requiredStages": [
2026-06-21T11:53:56.0696351Z         "doc",
2026-06-21T11:53:56.0696437Z         "impl",
2026-06-21T11:53:56.0696517Z         "unit",
2026-06-21T11:53:56.0696599Z         "int"
2026-06-21T11:53:56.0696684Z       ],
2026-06-21T11:53:56.0696770Z       "stages": {
2026-06-21T11:53:56.0696851Z         "doc": {
2026-06-21T11:53:56.0696947Z           "complete": true,
2026-06-21T11:53:56.0697037Z           "evidence": [
2026-06-21T11:53:56.0697117Z             {
2026-06-21T11:53:56.0697252Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T11:53:56.0697347Z               "line": 277
2026-06-21T11:53:56.0697442Z             },
2026-06-21T11:53:56.0697528Z             {
2026-06-21T11:53:56.0697629Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.0697719Z               "line": 198
2026-06-21T11:53:56.0697805Z             }
2026-06-21T11:53:56.0697877Z           ]
2026-06-21T11:53:56.0697967Z         },
2026-06-21T11:53:56.0698043Z         "impl": {
2026-06-21T11:53:56.0698139Z           "complete": true,
2026-06-21T11:53:56.0698235Z           "evidence": [
2026-06-21T11:53:56.0698315Z             {
2026-06-21T11:53:56.0698439Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0698516Z               "line": 1103
2026-06-21T11:53:56.0698597Z             },
2026-06-21T11:53:56.0698681Z             {
2026-06-21T11:53:56.0698810Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0698891Z               "line": 23
2026-06-21T11:53:56.0699048Z             },
2026-06-21T11:53:56.0699134Z             {
2026-06-21T11:53:56.0699263Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0699348Z               "line": 91
2026-06-21T11:53:56.0699429Z             },
2026-06-21T11:53:56.0699512Z             {
2026-06-21T11:53:56.0699639Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0699725Z               "line": 239
2026-06-21T11:53:56.0699807Z             },
2026-06-21T11:53:56.0699887Z             {
2026-06-21T11:53:56.0700011Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0700093Z               "line": 287
2026-06-21T11:53:56.0700179Z             },
2026-06-21T11:53:56.0700264Z             {
2026-06-21T11:53:56.0700374Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0700456Z               "line": 311
2026-06-21T11:53:56.0700541Z             },
2026-06-21T11:53:56.0700626Z             {
2026-06-21T11:53:56.0700746Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0700837Z               "line": 60
2026-06-21T11:53:56.0700922Z             },
2026-06-21T11:53:56.0701007Z             {
2026-06-21T11:53:56.0701136Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0701224Z               "line": 889
2026-06-21T11:53:56.0701300Z             }
2026-06-21T11:53:56.0701381Z           ]
2026-06-21T11:53:56.0701458Z         },
2026-06-21T11:53:56.0701543Z         "int": {
2026-06-21T11:53:56.0701638Z           "complete": true,
2026-06-21T11:53:56.0701725Z           "evidence": [
2026-06-21T11:53:56.0701811Z             {
2026-06-21T11:53:56.0701953Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:56.0702040Z               "line": 1089
2026-06-21T11:53:56.0702121Z             },
2026-06-21T11:53:56.0702206Z             {
2026-06-21T11:53:56.0702355Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:56.0702440Z               "line": 1194
2026-06-21T11:53:56.0702525Z             },
2026-06-21T11:53:56.0702703Z             {
2026-06-21T11:53:56.0702845Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:56.0703023Z               "line": 1262
2026-06-21T11:53:56.0703117Z             },
2026-06-21T11:53:56.0703189Z             {
2026-06-21T11:53:56.0703333Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T11:53:56.0703417Z               "line": 1355
2026-06-21T11:53:56.0703498Z             }
2026-06-21T11:53:56.0703575Z           ]
2026-06-21T11:53:56.0703657Z         },
2026-06-21T11:53:56.0703737Z         "unit": {
2026-06-21T11:53:56.0703827Z           "complete": true,
2026-06-21T11:53:56.0703907Z           "evidence": [
2026-06-21T11:53:56.0703989Z             {
2026-06-21T11:53:56.0704110Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.0704195Z               "line": 270
2026-06-21T11:53:56.0704282Z             },
2026-06-21T11:53:56.0704364Z             {
2026-06-21T11:53:56.0704491Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0704577Z               "line": 350
2026-06-21T11:53:56.0704669Z             },
2026-06-21T11:53:56.0704754Z             {
2026-06-21T11:53:56.0704868Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0704945Z               "line": 381
2026-06-21T11:53:56.0705031Z             },
2026-06-21T11:53:56.0705116Z             {
2026-06-21T11:53:56.0705246Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0705331Z               "line": 411
2026-06-21T11:53:56.0705412Z             },
2026-06-21T11:53:56.0705498Z             {
2026-06-21T11:53:56.0705613Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T11:53:56.0705698Z               "line": 440
2026-06-21T11:53:56.0705783Z             },
2026-06-21T11:53:56.0705861Z             {
2026-06-21T11:53:56.0705984Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0706080Z               "line": 1181
2026-06-21T11:53:56.0706171Z             }
2026-06-21T11:53:56.0706261Z           ]
2026-06-21T11:53:56.0706351Z         }
2026-06-21T11:53:56.0706431Z       }
2026-06-21T11:53:56.0706512Z     },
2026-06-21T11:53:56.0706598Z     {
2026-06-21T11:53:56.0706691Z       "id": "REQ-NET-1",
2026-06-21T11:53:56.0706872Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T11:53:56.0706964Z       "requiredStages": [
2026-06-21T11:53:56.0707043Z         "impl",
2026-06-21T11:53:56.0707125Z         "unit",
2026-06-21T11:53:56.0707207Z         "int"
2026-06-21T11:53:56.0707288Z       ],
2026-06-21T11:53:56.0707377Z       "stages": {
2026-06-21T11:53:56.0707464Z         "doc": {
2026-06-21T11:53:56.0707555Z           "complete": false,
2026-06-21T11:53:56.0707655Z           "evidence": []
2026-06-21T11:53:56.0707735Z         },
2026-06-21T11:53:56.0707827Z         "impl": {
2026-06-21T11:53:56.0707907Z           "complete": true,
2026-06-21T11:53:56.0708007Z           "evidence": [
2026-06-21T11:53:56.0708088Z             {
2026-06-21T11:53:56.0708213Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0708303Z               "line": 54
2026-06-21T11:53:56.0708384Z             },
2026-06-21T11:53:56.0708471Z             {
2026-06-21T11:53:56.0708579Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0708665Z               "line": 594
2026-06-21T11:53:56.0708748Z             },
2026-06-21T11:53:56.0708828Z             {
2026-06-21T11:53:56.0709033Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T11:53:56.0709119Z               "line": 130
2026-06-21T11:53:56.0709199Z             },
2026-06-21T11:53:56.0709284Z             {
2026-06-21T11:53:56.0709413Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0709505Z               "line": 97
2026-06-21T11:53:56.0709584Z             },
2026-06-21T11:53:56.0709665Z             {
2026-06-21T11:53:56.0709790Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0709975Z               "line": 159
2026-06-21T11:53:56.0710157Z             },
2026-06-21T11:53:56.0710242Z             {
2026-06-21T11:53:56.0710362Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0710443Z               "line": 175
2026-06-21T11:53:56.0710524Z             },
2026-06-21T11:53:56.0710610Z             {
2026-06-21T11:53:56.0710725Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0710810Z               "line": 190
2026-06-21T11:53:56.0710886Z             },
2026-06-21T11:53:56.0710963Z             {
2026-06-21T11:53:56.0711082Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0711172Z               "line": 271
2026-06-21T11:53:56.0711254Z             },
2026-06-21T11:53:56.0711341Z             {
2026-06-21T11:53:56.0711462Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0711543Z               "line": 306
2026-06-21T11:53:56.0711629Z             },
2026-06-21T11:53:56.0711714Z             {
2026-06-21T11:53:56.0711822Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0711912Z               "line": 312
2026-06-21T11:53:56.0711994Z             },
2026-06-21T11:53:56.0712085Z             {
2026-06-21T11:53:56.0712198Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0712285Z               "line": 318
2026-06-21T11:53:56.0712371Z             },
2026-06-21T11:53:56.0712461Z             {
2026-06-21T11:53:56.0712566Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0712657Z               "line": 334
2026-06-21T11:53:56.0712743Z             },
2026-06-21T11:53:56.0712828Z             {
2026-06-21T11:53:56.0712944Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0713024Z               "line": 354
2026-06-21T11:53:56.0713114Z             },
2026-06-21T11:53:56.0713200Z             {
2026-06-21T11:53:56.0713329Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T11:53:56.0713414Z               "line": 35
2026-06-21T11:53:56.0713495Z             },
2026-06-21T11:53:56.0713578Z             {
2026-06-21T11:53:56.0713696Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T11:53:56.0713787Z               "line": 85
2026-06-21T11:53:56.0713869Z             },
2026-06-21T11:53:56.0713954Z             {
2026-06-21T11:53:56.0714063Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0714150Z               "line": 138
2026-06-21T11:53:56.0714236Z             },
2026-06-21T11:53:56.0714311Z             {
2026-06-21T11:53:56.0714419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0714510Z               "line": 2953
2026-06-21T11:53:56.0714591Z             },
2026-06-21T11:53:56.0714680Z             {
2026-06-21T11:53:56.0714784Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0714880Z               "line": 17
2026-06-21T11:53:56.0714966Z             }
2026-06-21T11:53:56.0715056Z           ]
2026-06-21T11:53:56.0715137Z         },
2026-06-21T11:53:56.0715210Z         "int": {
2026-06-21T11:53:56.0715305Z           "complete": true,
2026-06-21T11:53:56.0715394Z           "evidence": [
2026-06-21T11:53:56.0715482Z             {
2026-06-21T11:53:56.0715605Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0715709Z               "line": 341
2026-06-21T11:53:56.0715791Z             },
2026-06-21T11:53:56.0715877Z             {
2026-06-21T11:53:56.0716001Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0716077Z               "line": 675
2026-06-21T11:53:56.0716173Z             },
2026-06-21T11:53:56.0716258Z             {
2026-06-21T11:53:56.0716377Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0716469Z               "line": 973
2026-06-21T11:53:56.0716549Z             }
2026-06-21T11:53:56.0716640Z           ]
2026-06-21T11:53:56.0716821Z         },
2026-06-21T11:53:56.0716911Z         "unit": {
2026-06-21T11:53:56.0716996Z           "complete": true,
2026-06-21T11:53:56.0717148Z           "evidence": [
2026-06-21T11:53:56.0717232Z             {
2026-06-21T11:53:56.0717346Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0717437Z               "line": 651
2026-06-21T11:53:56.0717519Z             },
2026-06-21T11:53:56.0717599Z             {
2026-06-21T11:53:56.0717719Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0717810Z               "line": 686
2026-06-21T11:53:56.0717895Z             },
2026-06-21T11:53:56.0717976Z             {
2026-06-21T11:53:56.0718105Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0718196Z               "line": 940
2026-06-21T11:53:56.0718276Z             },
2026-06-21T11:53:56.0718359Z             {
2026-06-21T11:53:56.0718477Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T11:53:56.0718581Z               "line": 201
2026-06-21T11:53:56.0718653Z             },
2026-06-21T11:53:56.0718740Z             {
2026-06-21T11:53:56.0718863Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0719031Z               "line": 442
2026-06-21T11:53:56.0719121Z             },
2026-06-21T11:53:56.0719202Z             {
2026-06-21T11:53:56.0719327Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0719421Z               "line": 456
2026-06-21T11:53:56.0719502Z             },
2026-06-21T11:53:56.0719588Z             {
2026-06-21T11:53:56.0719708Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0719797Z               "line": 475
2026-06-21T11:53:56.0719882Z             },
2026-06-21T11:53:56.0719964Z             {
2026-06-21T11:53:56.0720070Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T11:53:56.0720153Z               "line": 120
2026-06-21T11:53:56.0720239Z             },
2026-06-21T11:53:56.0720336Z             {
2026-06-21T11:53:56.0720441Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T11:53:56.0720526Z               "line": 163
2026-06-21T11:53:56.0720617Z             },
2026-06-21T11:53:56.0720702Z             {
2026-06-21T11:53:56.0720807Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T11:53:56.0720888Z               "line": 530
2026-06-21T11:53:56.0720970Z             },
2026-06-21T11:53:56.0721060Z             {
2026-06-21T11:53:56.0721165Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0721251Z               "line": 616
2026-06-21T11:53:56.0721332Z             },
2026-06-21T11:53:56.0721418Z             {
2026-06-21T11:53:56.0721523Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.0721619Z               "line": 1006
2026-06-21T11:53:56.0721703Z             }
2026-06-21T11:53:56.0721784Z           ]
2026-06-21T11:53:56.0721876Z         }
2026-06-21T11:53:56.0721957Z       }
2026-06-21T11:53:56.0722046Z     },
2026-06-21T11:53:56.0722127Z     {
2026-06-21T11:53:56.0722208Z       "id": "REQ-NET-2",
2026-06-21T11:53:56.0722397Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T11:53:56.0722487Z       "requiredStages": [
2026-06-21T11:53:56.0722578Z         "impl"
2026-06-21T11:53:56.0722659Z       ],
2026-06-21T11:53:56.0722740Z       "stages": {
2026-06-21T11:53:56.0722821Z         "doc": {
2026-06-21T11:53:56.0722922Z           "complete": false,
2026-06-21T11:53:56.0723011Z           "evidence": []
2026-06-21T11:53:56.0723088Z         },
2026-06-21T11:53:56.0723170Z         "impl": {
2026-06-21T11:53:56.0723265Z           "complete": true,
2026-06-21T11:53:56.0723364Z           "evidence": [
2026-06-21T11:53:56.0723446Z             {
2026-06-21T11:53:56.0723570Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:56.0723665Z               "line": 57
2026-06-21T11:53:56.0723746Z             },
2026-06-21T11:53:56.0723833Z             {
2026-06-21T11:53:56.0724056Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0724148Z               "line": 71
2026-06-21T11:53:56.0724309Z             },
2026-06-21T11:53:56.0724390Z             {
2026-06-21T11:53:56.0724514Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0724589Z               "line": 81
2026-06-21T11:53:56.0724671Z             },
2026-06-21T11:53:56.0724758Z             {
2026-06-21T11:53:56.0724876Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0724966Z               "line": 159
2026-06-21T11:53:56.0725056Z             },
2026-06-21T11:53:56.0725146Z             {
2026-06-21T11:53:56.0725249Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0725334Z               "line": 175
2026-06-21T11:53:56.0725417Z             },
2026-06-21T11:53:56.0725493Z             {
2026-06-21T11:53:56.0725607Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T11:53:56.0725707Z               "line": 190
2026-06-21T11:53:56.0725798Z             }
2026-06-21T11:53:56.0725874Z           ]
2026-06-21T11:53:56.0725964Z         },
2026-06-21T11:53:56.0726047Z         "int": {
2026-06-21T11:53:56.0726137Z           "complete": false,
2026-06-21T11:53:56.0726222Z           "evidence": []
2026-06-21T11:53:56.0726308Z         },
2026-06-21T11:53:56.0726409Z         "unit": {
2026-06-21T11:53:56.0726489Z           "complete": true,
2026-06-21T11:53:56.0726580Z           "evidence": [
2026-06-21T11:53:56.0726666Z             {
2026-06-21T11:53:56.0726785Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:56.0726870Z               "line": 402
2026-06-21T11:53:56.0726967Z             }
2026-06-21T11:53:56.0727052Z           ]
2026-06-21T11:53:56.0727132Z         }
2026-06-21T11:53:56.0727209Z       }
2026-06-21T11:53:56.0727291Z     },
2026-06-21T11:53:56.0727377Z     {
2026-06-21T11:53:56.0727466Z       "id": "REQ-NET-3",
2026-06-21T11:53:56.0727657Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T11:53:56.0727764Z       "requiredStages": [
2026-06-21T11:53:56.0727854Z         "impl",
2026-06-21T11:53:56.0727940Z         "unit"
2026-06-21T11:53:56.0728022Z       ],
2026-06-21T11:53:56.0728117Z       "stages": {
2026-06-21T11:53:56.0728197Z         "doc": {
2026-06-21T11:53:56.0728294Z           "complete": false,
2026-06-21T11:53:56.0728384Z           "evidence": []
2026-06-21T11:53:56.0728464Z         },
2026-06-21T11:53:56.0728555Z         "impl": {
2026-06-21T11:53:56.0728646Z           "complete": true,
2026-06-21T11:53:56.0728737Z           "evidence": [
2026-06-21T11:53:56.0728817Z             {
2026-06-21T11:53:56.0728938Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0729118Z               "line": 39
2026-06-21T11:53:56.0729189Z             },
2026-06-21T11:53:56.0729271Z             {
2026-06-21T11:53:56.0729395Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0729494Z               "line": 182
2026-06-21T11:53:56.0729572Z             },
2026-06-21T11:53:56.0729657Z             {
2026-06-21T11:53:56.0729781Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T11:53:56.0729868Z               "line": 333
2026-06-21T11:53:56.0729953Z             },
2026-06-21T11:53:56.0730033Z             {
2026-06-21T11:53:56.0730153Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T11:53:56.0730230Z               "line": 36
2026-06-21T11:53:56.0730319Z             },
2026-06-21T11:53:56.0730409Z             {
2026-06-21T11:53:56.0730533Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0730630Z               "line": 158
2026-06-21T11:53:56.0730709Z             },
2026-06-21T11:53:56.0730795Z             {
2026-06-21T11:53:56.0730915Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0731010Z               "line": 238
2026-06-21T11:53:56.0731095Z             },
2026-06-21T11:53:56.0731177Z             {
2026-06-21T11:53:56.0731405Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0731573Z               "line": 259
2026-06-21T11:53:56.0731663Z             },
2026-06-21T11:53:56.0731744Z             {
2026-06-21T11:53:56.0731864Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0731954Z               "line": 317
2026-06-21T11:53:56.0732035Z             },
2026-06-21T11:53:56.0732117Z             {
2026-06-21T11:53:56.0732235Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0732330Z               "line": 336
2026-06-21T11:53:56.0732422Z             },
2026-06-21T11:53:56.0732503Z             {
2026-06-21T11:53:56.0732625Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0732715Z               "line": 374
2026-06-21T11:53:56.0732802Z             },
2026-06-21T11:53:56.0732886Z             {
2026-06-21T11:53:56.0733004Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0733100Z               "line": 419
2026-06-21T11:53:56.0733182Z             },
2026-06-21T11:53:56.0733280Z             {
2026-06-21T11:53:56.0733391Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0733477Z               "line": 432
2026-06-21T11:53:56.0733558Z             },
2026-06-21T11:53:56.0733648Z             {
2026-06-21T11:53:56.0733768Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:56.0733849Z               "line": 29
2026-06-21T11:53:56.0733938Z             },
2026-06-21T11:53:56.0734016Z             {
2026-06-21T11:53:56.0734139Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:56.0734225Z               "line": 72
2026-06-21T11:53:56.0734306Z             },
2026-06-21T11:53:56.0734393Z             {
2026-06-21T11:53:56.0734512Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:56.0734597Z               "line": 123
2026-06-21T11:53:56.0734669Z             }
2026-06-21T11:53:56.0734764Z           ]
2026-06-21T11:53:56.0734850Z         },
2026-06-21T11:53:56.0734931Z         "int": {
2026-06-21T11:53:56.0735028Z           "complete": false,
2026-06-21T11:53:56.0735112Z           "evidence": []
2026-06-21T11:53:56.0735202Z         },
2026-06-21T11:53:56.0735285Z         "unit": {
2026-06-21T11:53:56.0735385Z           "complete": true,
2026-06-21T11:53:56.0735474Z           "evidence": [
2026-06-21T11:53:56.0735554Z             {
2026-06-21T11:53:56.0735669Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T11:53:56.0735753Z               "line": 223
2026-06-21T11:53:56.0735838Z             },
2026-06-21T11:53:56.0735924Z             {
2026-06-21T11:53:56.0736044Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T11:53:56.0736138Z               "line": 351
2026-06-21T11:53:56.0736224Z             },
2026-06-21T11:53:56.0736316Z             {
2026-06-21T11:53:56.0736425Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T11:53:56.0736520Z               "line": 504
2026-06-21T11:53:56.0736602Z             },
2026-06-21T11:53:56.0736687Z             {
2026-06-21T11:53:56.0736806Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T11:53:56.0736897Z               "line": 93
2026-06-21T11:53:56.0736978Z             },
2026-06-21T11:53:56.0737064Z             {
2026-06-21T11:53:56.0737178Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T11:53:56.0737260Z               "line": 142
2026-06-21T11:53:56.0737340Z             },
2026-06-21T11:53:56.0737426Z             {
2026-06-21T11:53:56.0737551Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:56.0737636Z               "line": 315
2026-06-21T11:53:56.0737721Z             },
2026-06-21T11:53:56.0737803Z             {
2026-06-21T11:53:56.0737919Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:56.0738012Z               "line": 355
2026-06-21T11:53:56.0738092Z             },
2026-06-21T11:53:56.0738301Z             {
2026-06-21T11:53:56.0738423Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T11:53:56.0738567Z               "line": 494
2026-06-21T11:53:56.0738658Z             }
2026-06-21T11:53:56.0738738Z           ]
2026-06-21T11:53:56.0738824Z         }
2026-06-21T11:53:56.0738906Z       }
2026-06-21T11:53:56.0741804Z     },
2026-06-21T11:53:56.0741894Z     {
2026-06-21T11:53:56.0741994Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T11:53:56.0742237Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T11:53:56.0742333Z       "requiredStages": [
2026-06-21T11:53:56.0742419Z         "impl",
2026-06-21T11:53:56.0742499Z         "unit"
2026-06-21T11:53:56.0742585Z       ],
2026-06-21T11:53:56.0742668Z       "stages": {
2026-06-21T11:53:56.0742753Z         "doc": {
2026-06-21T11:53:56.0742852Z           "complete": false,
2026-06-21T11:53:56.0742939Z           "evidence": []
2026-06-21T11:53:56.0743025Z         },
2026-06-21T11:53:56.0743124Z         "impl": {
2026-06-21T11:53:56.0743224Z           "complete": true,
2026-06-21T11:53:56.0743309Z           "evidence": [
2026-06-21T11:53:56.0743395Z             {
2026-06-21T11:53:56.0743521Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0743602Z               "line": 60
2026-06-21T11:53:56.0743689Z             },
2026-06-21T11:53:56.0743761Z             {
2026-06-21T11:53:56.0743888Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0743979Z               "line": 68
2026-06-21T11:53:56.0744056Z             },
2026-06-21T11:53:56.0744127Z             {
2026-06-21T11:53:56.0744241Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0744328Z               "line": 86
2026-06-21T11:53:56.0744409Z             },
2026-06-21T11:53:56.0744484Z             {
2026-06-21T11:53:56.0744591Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0744676Z               "line": 120
2026-06-21T11:53:56.0744771Z             },
2026-06-21T11:53:56.0744847Z             {
2026-06-21T11:53:56.0744953Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0745047Z               "line": 127
2026-06-21T11:53:56.0745123Z             },
2026-06-21T11:53:56.0745205Z             {
2026-06-21T11:53:56.0745315Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0745405Z               "line": 143
2026-06-21T11:53:56.0745491Z             },
2026-06-21T11:53:56.0745568Z             {
2026-06-21T11:53:56.0745681Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T11:53:56.0745762Z               "line": 16
2026-06-21T11:53:56.0745845Z             }
2026-06-21T11:53:56.0745926Z           ]
2026-06-21T11:53:56.0746010Z         },
2026-06-21T11:53:56.0746086Z         "int": {
2026-06-21T11:53:56.0746191Z           "complete": false,
2026-06-21T11:53:56.0746276Z           "evidence": []
2026-06-21T11:53:56.0746360Z         },
2026-06-21T11:53:56.0746446Z         "unit": {
2026-06-21T11:53:56.0746537Z           "complete": true,
2026-06-21T11:53:56.0746628Z           "evidence": [
2026-06-21T11:53:56.0746703Z             {
2026-06-21T11:53:56.0746818Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0746904Z               "line": 199
2026-06-21T11:53:56.0746985Z             },
2026-06-21T11:53:56.0747070Z             {
2026-06-21T11:53:56.0747181Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0747281Z               "line": 218
2026-06-21T11:53:56.0747361Z             },
2026-06-21T11:53:56.0747452Z             {
2026-06-21T11:53:56.0747571Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0747652Z               "line": 234
2026-06-21T11:53:56.0747729Z             },
2026-06-21T11:53:56.0747816Z             {
2026-06-21T11:53:56.0747933Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T11:53:56.0748019Z               "line": 256
2026-06-21T11:53:56.0748243Z             },
2026-06-21T11:53:56.0748325Z             {
2026-06-21T11:53:56.0748435Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T11:53:56.0748610Z               "line": 124
2026-06-21T11:53:56.0748685Z             },
2026-06-21T11:53:56.0748767Z             {
2026-06-21T11:53:56.0748875Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T11:53:56.0749046Z               "line": 140
2026-06-21T11:53:56.0749132Z             },
2026-06-21T11:53:56.0749204Z             {
2026-06-21T11:53:56.0749327Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T11:53:56.0749424Z               "line": 155
2026-06-21T11:53:56.0749504Z             }
2026-06-21T11:53:56.0749589Z           ]
2026-06-21T11:53:56.0749670Z         }
2026-06-21T11:53:56.0749753Z       }
2026-06-21T11:53:56.0749824Z     },
2026-06-21T11:53:56.0749909Z     {
2026-06-21T11:53:56.0750000Z       "id": "REQ-NOTIF-1",
2026-06-21T11:53:56.0750368Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T11:53:56.0750476Z       "requiredStages": [
2026-06-21T11:53:56.0750567Z         "impl",
2026-06-21T11:53:56.0750654Z         "unit",
2026-06-21T11:53:56.0750730Z         "int"
2026-06-21T11:53:56.0750810Z       ],
2026-06-21T11:53:56.0750891Z       "stages": {
2026-06-21T11:53:56.0750973Z         "doc": {
2026-06-21T11:53:56.0751054Z           "complete": false,
2026-06-21T11:53:56.0751144Z           "evidence": []
2026-06-21T11:53:56.0751225Z         },
2026-06-21T11:53:56.0751307Z         "impl": {
2026-06-21T11:53:56.0751402Z           "complete": true,
2026-06-21T11:53:56.0751482Z           "evidence": [
2026-06-21T11:53:56.0751567Z             {
2026-06-21T11:53:56.0751687Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0751773Z               "line": 514
2026-06-21T11:53:56.0751862Z             },
2026-06-21T11:53:56.0751939Z             {
2026-06-21T11:53:56.0752064Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0752149Z               "line": 30
2026-06-21T11:53:56.0752240Z             },
2026-06-21T11:53:56.0752321Z             {
2026-06-21T11:53:56.0752431Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0752506Z               "line": 69
2026-06-21T11:53:56.0752588Z             },
2026-06-21T11:53:56.0752669Z             {
2026-06-21T11:53:56.0752769Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0752864Z               "line": 93
2026-06-21T11:53:56.0752946Z             },
2026-06-21T11:53:56.0753017Z             {
2026-06-21T11:53:56.0753132Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0753213Z               "line": 107
2026-06-21T11:53:56.0753299Z             },
2026-06-21T11:53:56.0753379Z             {
2026-06-21T11:53:56.0753479Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0753567Z               "line": 142
2026-06-21T11:53:56.0753647Z             },
2026-06-21T11:53:56.0753731Z             {
2026-06-21T11:53:56.0753836Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0753922Z               "line": 187
2026-06-21T11:53:56.0754006Z             },
2026-06-21T11:53:56.0754081Z             {
2026-06-21T11:53:56.0754192Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0754278Z               "line": 258
2026-06-21T11:53:56.0754354Z             },
2026-06-21T11:53:56.0754434Z             {
2026-06-21T11:53:56.0754549Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0754625Z               "line": 372
2026-06-21T11:53:56.0754711Z             },
2026-06-21T11:53:56.0754797Z             {
2026-06-21T11:53:56.0754903Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0754983Z               "line": 479
2026-06-21T11:53:56.0755063Z             },
2026-06-21T11:53:56.0755146Z             {
2026-06-21T11:53:56.0755264Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0755440Z               "line": 24
2026-06-21T11:53:56.0755617Z             },
2026-06-21T11:53:56.0755702Z             {
2026-06-21T11:53:56.0755828Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0755918Z               "line": 34
2026-06-21T11:53:56.0756003Z             },
2026-06-21T11:53:56.0756080Z             {
2026-06-21T11:53:56.0756190Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0756279Z               "line": 60
2026-06-21T11:53:56.0756366Z             },
2026-06-21T11:53:56.0756448Z             {
2026-06-21T11:53:56.0756557Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0756651Z               "line": 82
2026-06-21T11:53:56.0756727Z             },
2026-06-21T11:53:56.0756813Z             {
2026-06-21T11:53:56.0756930Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0757015Z               "line": 94
2026-06-21T11:53:56.0757106Z             },
2026-06-21T11:53:56.0757183Z             {
2026-06-21T11:53:56.0757296Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:56.0757393Z               "line": 96
2026-06-21T11:53:56.0757474Z             },
2026-06-21T11:53:56.0757559Z             {
2026-06-21T11:53:56.0757678Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T11:53:56.0757770Z               "line": 44
2026-06-21T11:53:56.0757851Z             },
2026-06-21T11:53:56.0757926Z             {
2026-06-21T11:53:56.0758046Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T11:53:56.0758122Z               "line": 20
2026-06-21T11:53:56.0758213Z             },
2026-06-21T11:53:56.0758294Z             {
2026-06-21T11:53:56.0758414Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T11:53:56.0758489Z               "line": 30
2026-06-21T11:53:56.0758574Z             },
2026-06-21T11:53:56.0758652Z             {
2026-06-21T11:53:56.0758775Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T11:53:56.0758856Z               "line": 50
2026-06-21T11:53:56.0759029Z             },
2026-06-21T11:53:56.0759118Z             {
2026-06-21T11:53:56.0759227Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0759317Z               "line": 28
2026-06-21T11:53:56.0759421Z             },
2026-06-21T11:53:56.0759501Z             {
2026-06-21T11:53:56.0759606Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0759692Z               "line": 126
2026-06-21T11:53:56.0759773Z             },
2026-06-21T11:53:56.0759854Z             {
2026-06-21T11:53:56.0759959Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0760050Z               "line": 161
2026-06-21T11:53:56.0760135Z             },
2026-06-21T11:53:56.0760221Z             {
2026-06-21T11:53:56.0760322Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0760408Z               "line": 202
2026-06-21T11:53:56.0760497Z             },
2026-06-21T11:53:56.0760584Z             {
2026-06-21T11:53:56.0760693Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0760779Z               "line": 213
2026-06-21T11:53:56.0760855Z             },
2026-06-21T11:53:56.0760938Z             {
2026-06-21T11:53:56.0761041Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0761132Z               "line": 238
2026-06-21T11:53:56.0761243Z             },
2026-06-21T11:53:56.0761332Z             {
2026-06-21T11:53:56.0761451Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0761538Z               "line": 261
2026-06-21T11:53:56.0761615Z             },
2026-06-21T11:53:56.0761699Z             {
2026-06-21T11:53:56.0761814Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0761906Z               "line": 86
2026-06-21T11:53:56.0761985Z             }
2026-06-21T11:53:56.0762066Z           ]
2026-06-21T11:53:56.0762151Z         },
2026-06-21T11:53:56.0762342Z         "int": {
2026-06-21T11:53:56.0762441Z           "complete": true,
2026-06-21T11:53:56.0762596Z           "evidence": [
2026-06-21T11:53:56.0762681Z             {
2026-06-21T11:53:56.0762810Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0762896Z               "line": 285
2026-06-21T11:53:56.0762967Z             },
2026-06-21T11:53:56.0763048Z             {
2026-06-21T11:53:56.0763168Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T11:53:56.0763248Z               "line": 145
2026-06-21T11:53:56.0763334Z             },
2026-06-21T11:53:56.0763419Z             {
2026-06-21T11:53:56.0763535Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0763620Z               "line": 684
2026-06-21T11:53:56.0763706Z             },
2026-06-21T11:53:56.0763788Z             {
2026-06-21T11:53:56.0763906Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0763997Z               "line": 1102
2026-06-21T11:53:56.0764083Z             }
2026-06-21T11:53:56.0764169Z           ]
2026-06-21T11:53:56.0764259Z         },
2026-06-21T11:53:56.0764344Z         "unit": {
2026-06-21T11:53:56.0764439Z           "complete": true,
2026-06-21T11:53:56.0764524Z           "evidence": [
2026-06-21T11:53:56.0764594Z             {
2026-06-21T11:53:56.0764708Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0764794Z               "line": 572
2026-06-21T11:53:56.0764881Z             },
2026-06-21T11:53:56.0764961Z             {
2026-06-21T11:53:56.0765076Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0765167Z               "line": 636
2026-06-21T11:53:56.0765248Z             },
2026-06-21T11:53:56.0765333Z             {
2026-06-21T11:53:56.0765444Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0765524Z               "line": 740
2026-06-21T11:53:56.0765605Z             },
2026-06-21T11:53:56.0765686Z             {
2026-06-21T11:53:56.0765806Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0765891Z               "line": 772
2026-06-21T11:53:56.0765987Z             },
2026-06-21T11:53:56.0766068Z             {
2026-06-21T11:53:56.0766177Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0766263Z               "line": 840
2026-06-21T11:53:56.0766340Z             },
2026-06-21T11:53:56.0766431Z             {
2026-06-21T11:53:56.0766540Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0766626Z               "line": 898
2026-06-21T11:53:56.0766712Z             },
2026-06-21T11:53:56.0766792Z             {
2026-06-21T11:53:56.0766897Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0766979Z               "line": 1173
2026-06-21T11:53:56.0767056Z             },
2026-06-21T11:53:56.0767140Z             {
2026-06-21T11:53:56.0767249Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0767344Z               "line": 157
2026-06-21T11:53:56.0767420Z             },
2026-06-21T11:53:56.0767504Z             {
2026-06-21T11:53:56.0767628Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0767701Z               "line": 250
2026-06-21T11:53:56.0767777Z             },
2026-06-21T11:53:56.0767856Z             {
2026-06-21T11:53:56.0767962Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T11:53:56.0768053Z               "line": 273
2026-06-21T11:53:56.0768124Z             },
2026-06-21T11:53:56.0768214Z             {
2026-06-21T11:53:56.0768330Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:56.0768416Z               "line": 355
2026-06-21T11:53:56.0768500Z             },
2026-06-21T11:53:56.0768582Z             {
2026-06-21T11:53:56.0768696Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T11:53:56.0768791Z               "line": 392
2026-06-21T11:53:56.0768873Z             },
2026-06-21T11:53:56.0769030Z             {
2026-06-21T11:53:56.0769279Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T11:53:56.0769493Z               "line": 131
2026-06-21T11:53:56.0769575Z             },
2026-06-21T11:53:56.0769660Z             {
2026-06-21T11:53:56.0769778Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T11:53:56.0769864Z               "line": 72
2026-06-21T11:53:56.0769949Z             },
2026-06-21T11:53:56.0770033Z             {
2026-06-21T11:53:56.0770146Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T11:53:56.0770228Z               "line": 97
2026-06-21T11:53:56.0770311Z             },
2026-06-21T11:53:56.0770404Z             {
2026-06-21T11:53:56.0770505Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0770596Z               "line": 379
2026-06-21T11:53:56.0770677Z             },
2026-06-21T11:53:56.0770757Z             {
2026-06-21T11:53:56.0770863Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0770963Z               "line": 417
2026-06-21T11:53:56.0771048Z             },
2026-06-21T11:53:56.0771125Z             {
2026-06-21T11:53:56.0771244Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0771330Z               "line": 433
2026-06-21T11:53:56.0771411Z             },
2026-06-21T11:53:56.0771488Z             {
2026-06-21T11:53:56.0771601Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0771687Z               "line": 472
2026-06-21T11:53:56.0771769Z             },
2026-06-21T11:53:56.0771855Z             {
2026-06-21T11:53:56.0771959Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0772045Z               "line": 489
2026-06-21T11:53:56.0772127Z             },
2026-06-21T11:53:56.0772207Z             {
2026-06-21T11:53:56.0772312Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0772399Z               "line": 517
2026-06-21T11:53:56.0772485Z             },
2026-06-21T11:53:56.0772559Z             {
2026-06-21T11:53:56.0772687Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T11:53:56.0772769Z               "line": 548
2026-06-21T11:53:56.0772851Z             },
2026-06-21T11:53:56.0772926Z             {
2026-06-21T11:53:56.0773035Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0773117Z               "line": 745
2026-06-21T11:53:56.0773199Z             }
2026-06-21T11:53:56.0773279Z           ]
2026-06-21T11:53:56.0773350Z         }
2026-06-21T11:53:56.0773437Z       }
2026-06-21T11:53:56.0773513Z     },
2026-06-21T11:53:56.0773598Z     {
2026-06-21T11:53:56.0773685Z       "id": "REQ-NOTIF-2",
2026-06-21T11:53:56.0773946Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T11:53:56.0774043Z       "requiredStages": [
2026-06-21T11:53:56.0774123Z         "doc",
2026-06-21T11:53:56.0774209Z         "impl",
2026-06-21T11:53:56.0774294Z         "unit",
2026-06-21T11:53:56.0774377Z         "int"
2026-06-21T11:53:56.0774471Z       ],
2026-06-21T11:53:56.0774557Z       "stages": {
2026-06-21T11:53:56.0774643Z         "doc": {
2026-06-21T11:53:56.0774734Z           "complete": true,
2026-06-21T11:53:56.0774819Z           "evidence": [
2026-06-21T11:53:56.0774904Z             {
2026-06-21T11:53:56.0774999Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0775089Z               "line": 509
2026-06-21T11:53:56.0775164Z             },
2026-06-21T11:53:56.0775249Z             {
2026-06-21T11:53:56.0775350Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.0775432Z               "line": 123
2026-06-21T11:53:56.0775512Z             }
2026-06-21T11:53:56.0775593Z           ]
2026-06-21T11:53:56.0775674Z         },
2026-06-21T11:53:56.0775755Z         "impl": {
2026-06-21T11:53:56.0775850Z           "complete": true,
2026-06-21T11:53:56.0775936Z           "evidence": [
2026-06-21T11:53:56.0776023Z             {
2026-06-21T11:53:56.0776146Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0776318Z               "line": 287
2026-06-21T11:53:56.0776404Z             },
2026-06-21T11:53:56.0776566Z             {
2026-06-21T11:53:56.0776680Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0776775Z               "line": 301
2026-06-21T11:53:56.0776856Z             },
2026-06-21T11:53:56.0776929Z             {
2026-06-21T11:53:56.0777033Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0777119Z               "line": 326
2026-06-21T11:53:56.0777200Z             },
2026-06-21T11:53:56.0777282Z             {
2026-06-21T11:53:56.0777409Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.0777491Z               "line": 239
2026-06-21T11:53:56.0777578Z             },
2026-06-21T11:53:56.0777658Z             {
2026-06-21T11:53:56.0777776Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0777866Z               "line": 95
2026-06-21T11:53:56.0777952Z             },
2026-06-21T11:53:56.0778050Z             {
2026-06-21T11:53:56.0778155Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0778246Z               "line": 2225
2026-06-21T11:53:56.0778332Z             },
2026-06-21T11:53:56.0778412Z             {
2026-06-21T11:53:56.0778518Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0778613Z               "line": 2274
2026-06-21T11:53:56.0778698Z             },
2026-06-21T11:53:56.0778774Z             {
2026-06-21T11:53:56.0778880Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0779037Z               "line": 2353
2026-06-21T11:53:56.0779127Z             },
2026-06-21T11:53:56.0779214Z             {
2026-06-21T11:53:56.0779324Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0779423Z               "line": 2392
2026-06-21T11:53:56.0779505Z             }
2026-06-21T11:53:56.0779590Z           ]
2026-06-21T11:53:56.0779671Z         },
2026-06-21T11:53:56.0779757Z         "int": {
2026-06-21T11:53:56.0779844Z           "complete": true,
2026-06-21T11:53:56.0779938Z           "evidence": [
2026-06-21T11:53:56.0780019Z             {
2026-06-21T11:53:56.0780149Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0780230Z               "line": 810
2026-06-21T11:53:56.0780309Z             },
2026-06-21T11:53:56.0780394Z             {
2026-06-21T11:53:56.0780514Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0780607Z               "line": 1345
2026-06-21T11:53:56.0780688Z             }
2026-06-21T11:53:56.0780769Z           ]
2026-06-21T11:53:56.0780856Z         },
2026-06-21T11:53:56.0780936Z         "unit": {
2026-06-21T11:53:56.0781026Z           "complete": true,
2026-06-21T11:53:56.0781109Z           "evidence": [
2026-06-21T11:53:56.0781194Z             {
2026-06-21T11:53:56.0781308Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0781390Z               "line": 1022
2026-06-21T11:53:56.0781475Z             },
2026-06-21T11:53:56.0781557Z             {
2026-06-21T11:53:56.0781675Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0781762Z               "line": 1090
2026-06-21T11:53:56.0781847Z             },
2026-06-21T11:53:56.0781932Z             {
2026-06-21T11:53:56.0782034Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0782119Z               "line": 8210
2026-06-21T11:53:56.0782200Z             },
2026-06-21T11:53:56.0782286Z             {
2026-06-21T11:53:56.0782377Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0782476Z               "line": 8265
2026-06-21T11:53:56.0782586Z             }
2026-06-21T11:53:56.0782668Z           ]
2026-06-21T11:53:56.0782749Z         }
2026-06-21T11:53:56.0782828Z       }
2026-06-21T11:53:56.0782915Z     },
2026-06-21T11:53:56.0782992Z     {
2026-06-21T11:53:56.0783087Z       "id": "REQ-PAIR-1",
2026-06-21T11:53:56.0783200Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T11:53:56.0783286Z       "requiredStages": [
2026-06-21T11:53:56.0783476Z         "impl",
2026-06-21T11:53:56.0783562Z         "unit",
2026-06-21T11:53:56.0783639Z         "int"
2026-06-21T11:53:56.0783796Z       ],
2026-06-21T11:53:56.0783886Z       "stages": {
2026-06-21T11:53:56.0783969Z         "doc": {
2026-06-21T11:53:56.0784063Z           "complete": false,
2026-06-21T11:53:56.0784168Z           "evidence": []
2026-06-21T11:53:56.0784249Z         },
2026-06-21T11:53:56.0784331Z         "impl": {
2026-06-21T11:53:56.0784416Z           "complete": true,
2026-06-21T11:53:56.0784511Z           "evidence": [
2026-06-21T11:53:56.0784583Z             {
2026-06-21T11:53:56.0784711Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:56.0784797Z               "line": 27
2026-06-21T11:53:56.0784884Z             },
2026-06-21T11:53:56.0784966Z             {
2026-06-21T11:53:56.0785098Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:56.0785184Z               "line": 88
2026-06-21T11:53:56.0785280Z             },
2026-06-21T11:53:56.0785364Z             {
2026-06-21T11:53:56.0785492Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:56.0785583Z               "line": 110
2026-06-21T11:53:56.0785663Z             },
2026-06-21T11:53:56.0785748Z             {
2026-06-21T11:53:56.0785876Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:56.0785973Z               "line": 153
2026-06-21T11:53:56.0786058Z             },
2026-06-21T11:53:56.0786148Z             {
2026-06-21T11:53:56.0786268Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:56.0786353Z               "line": 182
2026-06-21T11:53:56.0786425Z             },
2026-06-21T11:53:56.0786516Z             {
2026-06-21T11:53:56.0786640Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0786730Z               "line": 29
2026-06-21T11:53:56.0786811Z             },
2026-06-21T11:53:56.0786893Z             {
2026-06-21T11:53:56.0787044Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T11:53:56.0787131Z               "line": 31
2026-06-21T11:53:56.0787222Z             },
2026-06-21T11:53:56.0787298Z             {
2026-06-21T11:53:56.0787426Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0787508Z               "line": 44
2026-06-21T11:53:56.0787598Z             },
2026-06-21T11:53:56.0787679Z             {
2026-06-21T11:53:56.0787809Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0787889Z               "line": 171
2026-06-21T11:53:56.0787974Z             },
2026-06-21T11:53:56.0788056Z             {
2026-06-21T11:53:56.0788181Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0788270Z               "line": 376
2026-06-21T11:53:56.0788354Z             }
2026-06-21T11:53:56.0788431Z           ]
2026-06-21T11:53:56.0788502Z         },
2026-06-21T11:53:56.0788586Z         "int": {
2026-06-21T11:53:56.0788686Z           "complete": true,
2026-06-21T11:53:56.0788777Z           "evidence": [
2026-06-21T11:53:56.0788854Z             {
2026-06-21T11:53:56.0789063Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0789155Z               "line": 645
2026-06-21T11:53:56.0789230Z             },
2026-06-21T11:53:56.0789325Z             {
2026-06-21T11:53:56.0789450Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0789541Z               "line": 887
2026-06-21T11:53:56.0789625Z             }
2026-06-21T11:53:56.0789712Z           ]
2026-06-21T11:53:56.0789793Z         },
2026-06-21T11:53:56.0789879Z         "unit": {
2026-06-21T11:53:56.0789959Z           "complete": true,
2026-06-21T11:53:56.0790042Z           "evidence": [
2026-06-21T11:53:56.0790122Z             {
2026-06-21T11:53:56.0790246Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:56.0790332Z               "line": 236
2026-06-21T11:53:56.0790418Z             },
2026-06-21T11:53:56.0790593Z             {
2026-06-21T11:53:56.0790714Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T11:53:56.0790898Z               "line": 349
2026-06-21T11:53:56.0790979Z             },
2026-06-21T11:53:56.0791060Z             {
2026-06-21T11:53:56.0791186Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0791276Z               "line": 194
2026-06-21T11:53:56.0791358Z             },
2026-06-21T11:53:56.0791450Z             {
2026-06-21T11:53:56.0791567Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0791644Z               "line": 216
2026-06-21T11:53:56.0791730Z             },
2026-06-21T11:53:56.0791820Z             {
2026-06-21T11:53:56.0791945Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0792031Z               "line": 230
2026-06-21T11:53:56.0792112Z             },
2026-06-21T11:53:56.0792192Z             {
2026-06-21T11:53:56.0792312Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0792416Z               "line": 242
2026-06-21T11:53:56.0792507Z             },
2026-06-21T11:53:56.0792594Z             {
2026-06-21T11:53:56.0792712Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0792802Z               "line": 256
2026-06-21T11:53:56.0792879Z             },
2026-06-21T11:53:56.0792966Z             {
2026-06-21T11:53:56.0793094Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0793175Z               "line": 270
2026-06-21T11:53:56.0793262Z             },
2026-06-21T11:53:56.0793337Z             {
2026-06-21T11:53:56.0793456Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0793539Z               "line": 277
2026-06-21T11:53:56.0793624Z             },
2026-06-21T11:53:56.0793708Z             {
2026-06-21T11:53:56.0793831Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T11:53:56.0793918Z               "line": 295
2026-06-21T11:53:56.0794004Z             },
2026-06-21T11:53:56.0794089Z             {
2026-06-21T11:53:56.0794208Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0794299Z               "line": 968
2026-06-21T11:53:56.0794380Z             },
2026-06-21T11:53:56.0794451Z             {
2026-06-21T11:53:56.0794581Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0794667Z               "line": 1051
2026-06-21T11:53:56.0794752Z             },
2026-06-21T11:53:56.0794833Z             {
2026-06-21T11:53:56.0794962Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0795057Z               "line": 1121
2026-06-21T11:53:56.0795139Z             },
2026-06-21T11:53:56.0795220Z             {
2026-06-21T11:53:56.0795338Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0795434Z               "line": 1182
2026-06-21T11:53:56.0795516Z             },
2026-06-21T11:53:56.0795610Z             {
2026-06-21T11:53:56.0795734Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0795817Z               "line": 1238
2026-06-21T11:53:56.0795906Z             },
2026-06-21T11:53:56.0795991Z             {
2026-06-21T11:53:56.0796114Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0796209Z               "line": 1457
2026-06-21T11:53:56.0796294Z             }
2026-06-21T11:53:56.0796383Z           ]
2026-06-21T11:53:56.0796470Z         }
2026-06-21T11:53:56.0796557Z       }
2026-06-21T11:53:56.0796637Z     },
2026-06-21T11:53:56.0796723Z     {
2026-06-21T11:53:56.0796819Z       "id": "REQ-PAIR-2",
2026-06-21T11:53:56.0796956Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T11:53:56.0797052Z       "requiredStages": [],
2026-06-21T11:53:56.0797138Z       "stages": {
2026-06-21T11:53:56.0797223Z         "doc": {
2026-06-21T11:53:56.0797309Z           "complete": false,
2026-06-21T11:53:56.0797467Z           "evidence": []
2026-06-21T11:53:56.0797552Z         },
2026-06-21T11:53:56.0797638Z         "impl": {
2026-06-21T11:53:56.0797863Z           "complete": false,
2026-06-21T11:53:56.0797948Z           "evidence": []
2026-06-21T11:53:56.0798040Z         },
2026-06-21T11:53:56.0798125Z         "int": {
2026-06-21T11:53:56.0798215Z           "complete": false,
2026-06-21T11:53:56.0798306Z           "evidence": []
2026-06-21T11:53:56.0798393Z         },
2026-06-21T11:53:56.0798477Z         "unit": {
2026-06-21T11:53:56.0798554Z           "complete": false,
2026-06-21T11:53:56.0798645Z           "evidence": []
2026-06-21T11:53:56.0798717Z         }
2026-06-21T11:53:56.0798801Z       }
2026-06-21T11:53:56.0798882Z     },
2026-06-21T11:53:56.0799048Z     {
2026-06-21T11:53:56.0799132Z       "id": "REQ-PAIR-3",
2026-06-21T11:53:56.0799275Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T11:53:56.0799371Z       "requiredStages": [
2026-06-21T11:53:56.0799452Z         "impl",
2026-06-21T11:53:56.0799551Z         "unit"
2026-06-21T11:53:56.0799633Z       ],
2026-06-21T11:53:56.0799724Z       "stages": {
2026-06-21T11:53:56.0799814Z         "doc": {
2026-06-21T11:53:56.0799899Z           "complete": false,
2026-06-21T11:53:56.0799982Z           "evidence": []
2026-06-21T11:53:56.0800062Z         },
2026-06-21T11:53:56.0800147Z         "impl": {
2026-06-21T11:53:56.0800229Z           "complete": true,
2026-06-21T11:53:56.0800325Z           "evidence": [
2026-06-21T11:53:56.0800396Z             {
2026-06-21T11:53:56.0800505Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0800587Z               "line": 3259
2026-06-21T11:53:56.0800668Z             },
2026-06-21T11:53:56.0800753Z             {
2026-06-21T11:53:56.0800858Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0800950Z               "line": 3328
2026-06-21T11:53:56.0801030Z             },
2026-06-21T11:53:56.0801116Z             {
2026-06-21T11:53:56.0801217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0801307Z               "line": 3709
2026-06-21T11:53:56.0801392Z             },
2026-06-21T11:53:56.0801472Z             {
2026-06-21T11:53:56.0801582Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0801671Z               "line": 4961
2026-06-21T11:53:56.0801751Z             }
2026-06-21T11:53:56.0801837Z           ]
2026-06-21T11:53:56.0801923Z         },
2026-06-21T11:53:56.0802014Z         "int": {
2026-06-21T11:53:56.0802099Z           "complete": false,
2026-06-21T11:53:56.0802195Z           "evidence": []
2026-06-21T11:53:56.0802277Z         },
2026-06-21T11:53:56.0802362Z         "unit": {
2026-06-21T11:53:56.0802462Z           "complete": true,
2026-06-21T11:53:56.0802548Z           "evidence": [
2026-06-21T11:53:56.0802629Z             {
2026-06-21T11:53:56.0802728Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0802815Z               "line": 9964
2026-06-21T11:53:56.0802906Z             },
2026-06-21T11:53:56.0802991Z             {
2026-06-21T11:53:56.0803096Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0803183Z               "line": 10179
2026-06-21T11:53:56.0803272Z             },
2026-06-21T11:53:56.0805818Z             {
2026-06-21T11:53:56.0805965Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0806057Z               "line": 10838
2026-06-21T11:53:56.0806142Z             },
2026-06-21T11:53:56.0806232Z             {
2026-06-21T11:53:56.0806343Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0806443Z               "line": 10857
2026-06-21T11:53:56.0806527Z             },
2026-06-21T11:53:56.0806617Z             {
2026-06-21T11:53:56.0806723Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0806807Z               "line": 10881
2026-06-21T11:53:56.0806897Z             },
2026-06-21T11:53:56.0806968Z             {
2026-06-21T11:53:56.0807074Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0807163Z               "line": 10900
2026-06-21T11:53:56.0807383Z             },
2026-06-21T11:53:56.0807469Z             {
2026-06-21T11:53:56.0807573Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0807746Z               "line": 10913
2026-06-21T11:53:56.0807826Z             },
2026-06-21T11:53:56.0807912Z             {
2026-06-21T11:53:56.0808013Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0808099Z               "line": 10922
2026-06-21T11:53:56.0808179Z             }
2026-06-21T11:53:56.0808261Z           ]
2026-06-21T11:53:56.0808342Z         }
2026-06-21T11:53:56.0808428Z       }
2026-06-21T11:53:56.0808513Z     },
2026-06-21T11:53:56.0808590Z     {
2026-06-21T11:53:56.0808675Z       "id": "REQ-PAIR-4",
2026-06-21T11:53:56.0808794Z       "title": "Subnet naming on first pairing",
2026-06-21T11:53:56.0808881Z       "requiredStages": [
2026-06-21T11:53:56.0809051Z         "impl",
2026-06-21T11:53:56.0809123Z         "unit"
2026-06-21T11:53:56.0809201Z       ],
2026-06-21T11:53:56.0809291Z       "stages": {
2026-06-21T11:53:56.0809423Z         "doc": {
2026-06-21T11:53:56.0809523Z           "complete": false,
2026-06-21T11:53:56.0809613Z           "evidence": []
2026-06-21T11:53:56.0809697Z         },
2026-06-21T11:53:56.0809778Z         "impl": {
2026-06-21T11:53:56.0809868Z           "complete": true,
2026-06-21T11:53:56.0809950Z           "evidence": [
2026-06-21T11:53:56.0810035Z             {
2026-06-21T11:53:56.0810159Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T11:53:56.0810246Z               "line": 174
2026-06-21T11:53:56.0810327Z             }
2026-06-21T11:53:56.0810407Z           ]
2026-06-21T11:53:56.0810489Z         },
2026-06-21T11:53:56.0810570Z         "int": {
2026-06-21T11:53:56.0810675Z           "complete": false,
2026-06-21T11:53:56.0810769Z           "evidence": []
2026-06-21T11:53:56.0810847Z         },
2026-06-21T11:53:56.0810932Z         "unit": {
2026-06-21T11:53:56.0811018Z           "complete": true,
2026-06-21T11:53:56.0811108Z           "evidence": [
2026-06-21T11:53:56.0811186Z             {
2026-06-21T11:53:56.0811327Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0811428Z               "line": 1294
2026-06-21T11:53:56.0811505Z             }
2026-06-21T11:53:56.0811590Z           ]
2026-06-21T11:53:56.0811676Z         }
2026-06-21T11:53:56.0811758Z       }
2026-06-21T11:53:56.0811839Z     },
2026-06-21T11:53:56.0811919Z     {
2026-06-21T11:53:56.0812018Z       "id": "REQ-PAIR-5",
2026-06-21T11:53:56.0812321Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T11:53:56.0812421Z       "requiredStages": [
2026-06-21T11:53:56.0812503Z         "impl",
2026-06-21T11:53:56.0812607Z         "unit",
2026-06-21T11:53:56.0812692Z         "int"
2026-06-21T11:53:56.0812779Z       ],
2026-06-21T11:53:56.0812860Z       "stages": {
2026-06-21T11:53:56.0812936Z         "doc": {
2026-06-21T11:53:56.0813031Z           "complete": false,
2026-06-21T11:53:56.0813127Z           "evidence": []
2026-06-21T11:53:56.0813213Z         },
2026-06-21T11:53:56.0813298Z         "impl": {
2026-06-21T11:53:56.0813390Z           "complete": true,
2026-06-21T11:53:56.0813475Z           "evidence": [
2026-06-21T11:53:56.0813556Z             {
2026-06-21T11:53:56.0813689Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0813767Z               "line": 44
2026-06-21T11:53:56.0813856Z             },
2026-06-21T11:53:56.0813937Z             {
2026-06-21T11:53:56.0814067Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0814162Z               "line": 96
2026-06-21T11:53:56.0814247Z             },
2026-06-21T11:53:56.0814334Z             {
2026-06-21T11:53:56.0814453Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0814543Z               "line": 107
2026-06-21T11:53:56.0814625Z             },
2026-06-21T11:53:56.0814701Z             {
2026-06-21T11:53:56.0814824Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0815014Z               "line": 124
2026-06-21T11:53:56.0815181Z             },
2026-06-21T11:53:56.0815266Z             {
2026-06-21T11:53:56.0815391Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0815477Z               "line": 155
2026-06-21T11:53:56.0815562Z             },
2026-06-21T11:53:56.0815644Z             {
2026-06-21T11:53:56.0815763Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0815857Z               "line": 195
2026-06-21T11:53:56.0815939Z             },
2026-06-21T11:53:56.0816025Z             {
2026-06-21T11:53:56.0816153Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0816239Z               "line": 251
2026-06-21T11:53:56.0816326Z             },
2026-06-21T11:53:56.0816406Z             {
2026-06-21T11:53:56.0816554Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0816651Z               "line": 33
2026-06-21T11:53:56.0816735Z             },
2026-06-21T11:53:56.0816821Z             {
2026-06-21T11:53:56.0816966Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0817040Z               "line": 45
2026-06-21T11:53:56.0817121Z             },
2026-06-21T11:53:56.0817206Z             {
2026-06-21T11:53:56.0817339Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0817433Z               "line": 59
2026-06-21T11:53:56.0817508Z             },
2026-06-21T11:53:56.0817581Z             {
2026-06-21T11:53:56.0817700Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0817781Z               "line": 376
2026-06-21T11:53:56.0817867Z             }
2026-06-21T11:53:56.0817948Z           ]
2026-06-21T11:53:56.0818029Z         },
2026-06-21T11:53:56.0818114Z         "int": {
2026-06-21T11:53:56.0818201Z           "complete": true,
2026-06-21T11:53:56.0818291Z           "evidence": [
2026-06-21T11:53:56.0818377Z             {
2026-06-21T11:53:56.0818506Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0818601Z               "line": 887
2026-06-21T11:53:56.0818673Z             },
2026-06-21T11:53:56.0818758Z             {
2026-06-21T11:53:56.0818874Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0819030Z               "line": 342
2026-06-21T11:53:56.0819116Z             }
2026-06-21T11:53:56.0819203Z           ]
2026-06-21T11:53:56.0819292Z         },
2026-06-21T11:53:56.0819378Z         "unit": {
2026-06-21T11:53:56.0819475Z           "complete": true,
2026-06-21T11:53:56.0819555Z           "evidence": [
2026-06-21T11:53:56.0819640Z             {
2026-06-21T11:53:56.0819761Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0819847Z               "line": 293
2026-06-21T11:53:56.0819921Z             },
2026-06-21T11:53:56.0820002Z             {
2026-06-21T11:53:56.0820121Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0820211Z               "line": 304
2026-06-21T11:53:56.0820305Z             },
2026-06-21T11:53:56.0820400Z             {
2026-06-21T11:53:56.0820515Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.0820595Z               "line": 406
2026-06-21T11:53:56.0820681Z             },
2026-06-21T11:53:56.0820763Z             {
2026-06-21T11:53:56.0820892Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0820986Z               "line": 72
2026-06-21T11:53:56.0821063Z             },
2026-06-21T11:53:56.0821144Z             {
2026-06-21T11:53:56.0821311Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0821392Z               "line": 82
2026-06-21T11:53:56.0821478Z             },
2026-06-21T11:53:56.0821559Z             {
2026-06-21T11:53:56.0821688Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0821878Z               "line": 100
2026-06-21T11:53:56.0821959Z             },
2026-06-21T11:53:56.0822037Z             {
2026-06-21T11:53:56.0822288Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0822395Z               "line": 110
2026-06-21T11:53:56.0822484Z             },
2026-06-21T11:53:56.0822568Z             {
2026-06-21T11:53:56.0822707Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T11:53:56.0822791Z               "line": 125
2026-06-21T11:53:56.0822867Z             },
2026-06-21T11:53:56.0822952Z             {
2026-06-21T11:53:56.0823077Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0823167Z               "line": 1044
2026-06-21T11:53:56.0823257Z             },
2026-06-21T11:53:56.0823344Z             {
2026-06-21T11:53:56.0823463Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0823548Z               "line": 1110
2026-06-21T11:53:56.0823630Z             },
2026-06-21T11:53:56.0823711Z             {
2026-06-21T11:53:56.0823844Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.0823965Z               "line": 1357
2026-06-21T11:53:56.0824050Z             }
2026-06-21T11:53:56.0824131Z           ]
2026-06-21T11:53:56.0824230Z         }
2026-06-21T11:53:56.0824312Z       }
2026-06-21T11:53:56.0824397Z     },
2026-06-21T11:53:56.0824474Z     {
2026-06-21T11:53:56.0824569Z       "id": "REQ-PAIR-6",
2026-06-21T11:53:56.0824840Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T11:53:56.0824933Z       "requiredStages": [
2026-06-21T11:53:56.0825017Z         "impl",
2026-06-21T11:53:56.0825093Z         "unit"
2026-06-21T11:53:56.0825204Z       ],
2026-06-21T11:53:56.0825290Z       "stages": {
2026-06-21T11:53:56.0825374Z         "doc": {
2026-06-21T11:53:56.0825473Z           "complete": false,
2026-06-21T11:53:56.0825560Z           "evidence": []
2026-06-21T11:53:56.0825646Z         },
2026-06-21T11:53:56.0825727Z         "impl": {
2026-06-21T11:53:56.0825822Z           "complete": true,
2026-06-21T11:53:56.0825918Z           "evidence": [
2026-06-21T11:53:56.0825999Z             {
2026-06-21T11:53:56.0826112Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0826200Z               "line": 3328
2026-06-21T11:53:56.0826285Z             },
2026-06-21T11:53:56.0826371Z             {
2026-06-21T11:53:56.0826475Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0826562Z               "line": 3709
2026-06-21T11:53:56.0826637Z             },
2026-06-21T11:53:56.0826714Z             {
2026-06-21T11:53:56.0826829Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0826910Z               "line": 18
2026-06-21T11:53:56.0826990Z             },
2026-06-21T11:53:56.0827071Z             {
2026-06-21T11:53:56.0827177Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0827272Z               "line": 49
2026-06-21T11:53:56.0827358Z             },
2026-06-21T11:53:56.0827439Z             {
2026-06-21T11:53:56.0827549Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0827633Z               "line": 318
2026-06-21T11:53:56.0827714Z             }
2026-06-21T11:53:56.0827795Z           ]
2026-06-21T11:53:56.0827881Z         },
2026-06-21T11:53:56.0827964Z         "int": {
2026-06-21T11:53:56.0828050Z           "complete": false,
2026-06-21T11:53:56.0828141Z           "evidence": []
2026-06-21T11:53:56.0828223Z         },
2026-06-21T11:53:56.0828312Z         "unit": {
2026-06-21T11:53:56.0828393Z           "complete": true,
2026-06-21T11:53:56.0828490Z           "evidence": [
2026-06-21T11:53:56.0828571Z             {
2026-06-21T11:53:56.0828670Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0828761Z               "line": 10935
2026-06-21T11:53:56.0828842Z             },
2026-06-21T11:53:56.0828923Z             {
2026-06-21T11:53:56.0829100Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0829318Z               "line": 10952
2026-06-21T11:53:56.0829410Z             },
2026-06-21T11:53:56.0829562Z             {
2026-06-21T11:53:56.0829666Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0829749Z               "line": 383
2026-06-21T11:53:56.0829833Z             },
2026-06-21T11:53:56.0829914Z             {
2026-06-21T11:53:56.0830030Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T11:53:56.0830111Z               "line": 392
2026-06-21T11:53:56.0830195Z             }
2026-06-21T11:53:56.0830272Z           ]
2026-06-21T11:53:56.0830354Z         }
2026-06-21T11:53:56.0830440Z       }
2026-06-21T11:53:56.0830519Z     },
2026-06-21T11:53:56.0830600Z     {
2026-06-21T11:53:56.0830695Z       "id": "REQ-PAIR-7",
2026-06-21T11:53:56.0830841Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T11:53:56.0830940Z       "requiredStages": [],
2026-06-21T11:53:56.0831027Z       "stages": {
2026-06-21T11:53:56.0831128Z         "doc": {
2026-06-21T11:53:56.0831217Z           "complete": false,
2026-06-21T11:53:56.0831304Z           "evidence": []
2026-06-21T11:53:56.0831385Z         },
2026-06-21T11:53:56.0831461Z         "impl": {
2026-06-21T11:53:56.0831556Z           "complete": false,
2026-06-21T11:53:56.0831638Z           "evidence": []
2026-06-21T11:53:56.0831723Z         },
2026-06-21T11:53:56.0831809Z         "int": {
2026-06-21T11:53:56.0831904Z           "complete": false,
2026-06-21T11:53:56.0831991Z           "evidence": []
2026-06-21T11:53:56.0832071Z         },
2026-06-21T11:53:56.0832157Z         "unit": {
2026-06-21T11:53:56.0832238Z           "complete": false,
2026-06-21T11:53:56.0832320Z           "evidence": []
2026-06-21T11:53:56.0832400Z         }
2026-06-21T11:53:56.0832467Z       }
2026-06-21T11:53:56.0832538Z     },
2026-06-21T11:53:56.0832616Z     {
2026-06-21T11:53:56.0832701Z       "id": "REQ-PAIR-8",
2026-06-21T11:53:56.0834161Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T11:53:56.0834261Z       "requiredStages": [
2026-06-21T11:53:56.0834357Z         "impl",
2026-06-21T11:53:56.0834437Z         "unit"
2026-06-21T11:53:56.0834525Z       ],
2026-06-21T11:53:56.0834610Z       "stages": {
2026-06-21T11:53:56.0834695Z         "doc": {
2026-06-21T11:53:56.0834776Z           "complete": false,
2026-06-21T11:53:56.0834873Z           "evidence": []
2026-06-21T11:53:56.0834962Z         },
2026-06-21T11:53:56.0835043Z         "impl": {
2026-06-21T11:53:56.0835139Z           "complete": true,
2026-06-21T11:53:56.0835216Z           "evidence": [
2026-06-21T11:53:56.0835300Z             {
2026-06-21T11:53:56.0835430Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.0835526Z               "line": 577
2026-06-21T11:53:56.0835605Z             },
2026-06-21T11:53:56.0835692Z             {
2026-06-21T11:53:56.0835822Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T11:53:56.0835906Z               "line": 22
2026-06-21T11:53:56.0835991Z             },
2026-06-21T11:53:56.0836077Z             {
2026-06-21T11:53:56.0836207Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T11:53:56.0836292Z               "line": 76
2026-06-21T11:53:56.0836377Z             },
2026-06-21T11:53:56.0836464Z             {
2026-06-21T11:53:56.0836583Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T11:53:56.0836677Z               "line": 127
2026-06-21T11:53:56.0836760Z             }
2026-06-21T11:53:56.0836850Z           ]
2026-06-21T11:53:56.0836935Z         },
2026-06-21T11:53:56.0837021Z         "int": {
2026-06-21T11:53:56.0837193Z           "complete": false,
2026-06-21T11:53:56.0837283Z           "evidence": []
2026-06-21T11:53:56.0837422Z         },
2026-06-21T11:53:56.0837503Z         "unit": {
2026-06-21T11:53:56.0837598Z           "complete": true,
2026-06-21T11:53:56.0837679Z           "evidence": [
2026-06-21T11:53:56.0837761Z             {
2026-06-21T11:53:56.0837888Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T11:53:56.0837980Z               "line": 183
2026-06-21T11:53:56.0838062Z             },
2026-06-21T11:53:56.0838146Z             {
2026-06-21T11:53:56.0838269Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T11:53:56.0838355Z               "line": 195
2026-06-21T11:53:56.0838436Z             },
2026-06-21T11:53:56.0838525Z             {
2026-06-21T11:53:56.0838643Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T11:53:56.0838725Z               "line": 211
2026-06-21T11:53:56.0838816Z             },
2026-06-21T11:53:56.0838896Z             {
2026-06-21T11:53:56.0839087Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T11:53:56.0839173Z               "line": 227
2026-06-21T11:53:56.0839254Z             }
2026-06-21T11:53:56.0839350Z           ]
2026-06-21T11:53:56.0839445Z         }
2026-06-21T11:53:56.0839530Z       }
2026-06-21T11:53:56.0839617Z     },
2026-06-21T11:53:56.0839703Z     {
2026-06-21T11:53:56.0839793Z       "id": "REQ-PICKER-1",
2026-06-21T11:53:56.0843399Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T11:53:56.0843515Z       "requiredStages": [
2026-06-21T11:53:56.0843599Z         "impl",
2026-06-21T11:53:56.0843684Z         "unit"
2026-06-21T11:53:56.0843765Z       ],
2026-06-21T11:53:56.0843856Z       "stages": {
2026-06-21T11:53:56.0843930Z         "doc": {
2026-06-21T11:53:56.0844025Z           "complete": false,
2026-06-21T11:53:56.0844120Z           "evidence": []
2026-06-21T11:53:56.0844202Z         },
2026-06-21T11:53:56.0844282Z         "impl": {
2026-06-21T11:53:56.0844377Z           "complete": true,
2026-06-21T11:53:56.0844465Z           "evidence": [
2026-06-21T11:53:56.0844550Z             {
2026-06-21T11:53:56.0844659Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0844745Z               "line": 248
2026-06-21T11:53:56.0844822Z             },
2026-06-21T11:53:56.0844903Z             {
2026-06-21T11:53:56.0845021Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.0845104Z               "line": 263
2026-06-21T11:53:56.0845188Z             }
2026-06-21T11:53:56.0845269Z           ]
2026-06-21T11:53:56.0845355Z         },
2026-06-21T11:53:56.0845442Z         "int": {
2026-06-21T11:53:56.0845527Z           "complete": false,
2026-06-21T11:53:56.0845618Z           "evidence": []
2026-06-21T11:53:56.0845695Z         },
2026-06-21T11:53:56.0845776Z         "unit": {
2026-06-21T11:53:56.0845956Z           "complete": true,
2026-06-21T11:53:56.0846053Z           "evidence": [
2026-06-21T11:53:56.0846228Z             {
2026-06-21T11:53:56.0846353Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0846448Z               "line": 476
2026-06-21T11:53:56.0846532Z             },
2026-06-21T11:53:56.0846617Z             {
2026-06-21T11:53:56.0846733Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.0846823Z               "line": 753
2026-06-21T11:53:56.0846913Z             },
2026-06-21T11:53:56.0846995Z             {
2026-06-21T11:53:56.0847105Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.0847190Z               "line": 886
2026-06-21T11:53:56.0847276Z             },
2026-06-21T11:53:56.0847358Z             {
2026-06-21T11:53:56.0847467Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.0847552Z               "line": 455
2026-06-21T11:53:56.0847629Z             }
2026-06-21T11:53:56.0847715Z           ]
2026-06-21T11:53:56.0847796Z         }
2026-06-21T11:53:56.0847881Z       }
2026-06-21T11:53:56.0847959Z     },
2026-06-21T11:53:56.0848054Z     {
2026-06-21T11:53:56.0848139Z       "id": "REQ-PICKER-2",
2026-06-21T11:53:56.0850162Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T11:53:56.0850268Z       "requiredStages": [
2026-06-21T11:53:56.0850353Z         "impl",
2026-06-21T11:53:56.0850438Z         "unit"
2026-06-21T11:53:56.0850535Z       ],
2026-06-21T11:53:56.0850611Z       "stages": {
2026-06-21T11:53:56.0850701Z         "doc": {
2026-06-21T11:53:56.0850792Z           "complete": false,
2026-06-21T11:53:56.0850878Z           "evidence": []
2026-06-21T11:53:56.0850963Z         },
2026-06-21T11:53:56.0851040Z         "impl": {
2026-06-21T11:53:56.0851136Z           "complete": true,
2026-06-21T11:53:56.0851217Z           "evidence": [
2026-06-21T11:53:56.0851301Z             {
2026-06-21T11:53:56.0851431Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0851522Z               "line": 183
2026-06-21T11:53:56.0851612Z             },
2026-06-21T11:53:56.0851697Z             {
2026-06-21T11:53:56.0851802Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0851887Z               "line": 296
2026-06-21T11:53:56.0851966Z             }
2026-06-21T11:53:56.0852056Z           ]
2026-06-21T11:53:56.0852138Z         },
2026-06-21T11:53:56.0852224Z         "int": {
2026-06-21T11:53:56.0852304Z           "complete": false,
2026-06-21T11:53:56.0852394Z           "evidence": []
2026-06-21T11:53:56.0852482Z         },
2026-06-21T11:53:56.0852573Z         "unit": {
2026-06-21T11:53:56.0852657Z           "complete": true,
2026-06-21T11:53:56.0852744Z           "evidence": [
2026-06-21T11:53:56.0852830Z             {
2026-06-21T11:53:56.0852953Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.0853039Z               "line": 655
2026-06-21T11:53:56.0853126Z             }
2026-06-21T11:53:56.0853210Z           ]
2026-06-21T11:53:56.0853296Z         }
2026-06-21T11:53:56.0853378Z       }
2026-06-21T11:53:56.0853464Z     },
2026-06-21T11:53:56.0853548Z     {
2026-06-21T11:53:56.0853645Z       "id": "REQ-PICKER-3",
2026-06-21T11:53:56.0856144Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T11:53:56.0856454Z       "requiredStages": [
2026-06-21T11:53:56.0856540Z         "impl",
2026-06-21T11:53:56.0856628Z         "unit"
2026-06-21T11:53:56.0856711Z       ],
2026-06-21T11:53:56.0856798Z       "stages": {
2026-06-21T11:53:56.0856880Z         "doc": {
2026-06-21T11:53:56.0856975Z           "complete": false,
2026-06-21T11:53:56.0857068Z           "evidence": []
2026-06-21T11:53:56.0857154Z         },
2026-06-21T11:53:56.0857250Z         "impl": {
2026-06-21T11:53:56.0857341Z           "complete": true,
2026-06-21T11:53:56.0857445Z           "evidence": [
2026-06-21T11:53:56.0857531Z             {
2026-06-21T11:53:56.0857641Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0857731Z               "line": 124
2026-06-21T11:53:56.0857816Z             }
2026-06-21T11:53:56.0857909Z           ]
2026-06-21T11:53:56.0857984Z         },
2026-06-21T11:53:56.0858074Z         "int": {
2026-06-21T11:53:56.0858161Z           "complete": false,
2026-06-21T11:53:56.0858270Z           "evidence": []
2026-06-21T11:53:56.0858356Z         },
2026-06-21T11:53:56.0858455Z         "unit": {
2026-06-21T11:53:56.0858552Z           "complete": true,
2026-06-21T11:53:56.0858628Z           "evidence": [
2026-06-21T11:53:56.0858718Z             {
2026-06-21T11:53:56.0858829Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0858924Z               "line": 369
2026-06-21T11:53:56.0859114Z             }
2026-06-21T11:53:56.0859201Z           ]
2026-06-21T11:53:56.0859300Z         }
2026-06-21T11:53:56.0859389Z       }
2026-06-21T11:53:56.0859480Z     },
2026-06-21T11:53:56.0859561Z     {
2026-06-21T11:53:56.0859664Z       "id": "REQ-PICKER-4",
2026-06-21T11:53:56.0861614Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T11:53:56.0861720Z       "requiredStages": [
2026-06-21T11:53:56.0861819Z         "impl",
2026-06-21T11:53:56.0861900Z         "unit"
2026-06-21T11:53:56.0861996Z       ],
2026-06-21T11:53:56.0862078Z       "stages": {
2026-06-21T11:53:56.0862158Z         "doc": {
2026-06-21T11:53:56.0862257Z           "complete": false,
2026-06-21T11:53:56.0862342Z           "evidence": []
2026-06-21T11:53:56.0862433Z         },
2026-06-21T11:53:56.0862522Z         "impl": {
2026-06-21T11:53:56.0862616Z           "complete": true,
2026-06-21T11:53:56.0862707Z           "evidence": [
2026-06-21T11:53:56.0862784Z             {
2026-06-21T11:53:56.0862912Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0862999Z               "line": 353
2026-06-21T11:53:56.0863085Z             },
2026-06-21T11:53:56.0863170Z             {
2026-06-21T11:53:56.0863289Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0863371Z               "line": 105
2026-06-21T11:53:56.0863457Z             }
2026-06-21T11:53:56.0863546Z           ]
2026-06-21T11:53:56.0863728Z         },
2026-06-21T11:53:56.0863809Z         "int": {
2026-06-21T11:53:56.0863895Z           "complete": false,
2026-06-21T11:53:56.0864066Z           "evidence": []
2026-06-21T11:53:56.0864152Z         },
2026-06-21T11:53:56.0864233Z         "unit": {
2026-06-21T11:53:56.0864330Z           "complete": true,
2026-06-21T11:53:56.0864414Z           "evidence": [
2026-06-21T11:53:56.0864490Z             {
2026-06-21T11:53:56.0864616Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0864706Z               "line": 1246
2026-06-21T11:53:56.0864790Z             },
2026-06-21T11:53:56.0864870Z             {
2026-06-21T11:53:56.0864995Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0865083Z               "line": 427
2026-06-21T11:53:56.0865169Z             }
2026-06-21T11:53:56.0865255Z           ]
2026-06-21T11:53:56.0865342Z         }
2026-06-21T11:53:56.0865431Z       }
2026-06-21T11:53:56.0865507Z     },
2026-06-21T11:53:56.0865604Z     {
2026-06-21T11:53:56.0865699Z       "id": "REQ-PICKER-5",
2026-06-21T11:53:56.0868779Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T11:53:56.0868887Z       "requiredStages": [
2026-06-21T11:53:56.0869064Z         "impl",
2026-06-21T11:53:56.0869145Z         "unit"
2026-06-21T11:53:56.0869231Z       ],
2026-06-21T11:53:56.0869312Z       "stages": {
2026-06-21T11:53:56.0869408Z         "doc": {
2026-06-21T11:53:56.0869498Z           "complete": false,
2026-06-21T11:53:56.0869593Z           "evidence": []
2026-06-21T11:53:56.0869684Z         },
2026-06-21T11:53:56.0869770Z         "impl": {
2026-06-21T11:53:56.0869869Z           "complete": true,
2026-06-21T11:53:56.0869949Z           "evidence": [
2026-06-21T11:53:56.0870035Z             {
2026-06-21T11:53:56.0870144Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0870243Z               "line": 1802
2026-06-21T11:53:56.0870324Z             }
2026-06-21T11:53:56.0870410Z           ]
2026-06-21T11:53:56.0870487Z         },
2026-06-21T11:53:56.0870572Z         "int": {
2026-06-21T11:53:56.0870667Z           "complete": false,
2026-06-21T11:53:56.0870754Z           "evidence": []
2026-06-21T11:53:56.0870844Z         },
2026-06-21T11:53:56.0870934Z         "unit": {
2026-06-21T11:53:56.0871012Z           "complete": true,
2026-06-21T11:53:56.0871107Z           "evidence": [
2026-06-21T11:53:56.0871187Z             {
2026-06-21T11:53:56.0871292Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.0871383Z               "line": 7526
2026-06-21T11:53:56.0871464Z             }
2026-06-21T11:53:56.0871549Z           ]
2026-06-21T11:53:56.0871631Z         }
2026-06-21T11:53:56.0871717Z       }
2026-06-21T11:53:56.0871802Z     },
2026-06-21T11:53:56.0871887Z     {
2026-06-21T11:53:56.0871998Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T11:53:56.0873396Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T11:53:56.0873683Z       "requiredStages": [],
2026-06-21T11:53:56.0873768Z       "stages": {
2026-06-21T11:53:56.0873854Z         "doc": {
2026-06-21T11:53:56.0873945Z           "complete": false,
2026-06-21T11:53:56.0874045Z           "evidence": []
2026-06-21T11:53:56.0874130Z         },
2026-06-21T11:53:56.0874212Z         "impl": {
2026-06-21T11:53:56.0874298Z           "complete": false,
2026-06-21T11:53:56.0874383Z           "evidence": []
2026-06-21T11:53:56.0874469Z         },
2026-06-21T11:53:56.0874551Z         "int": {
2026-06-21T11:53:56.0874650Z           "complete": false,
2026-06-21T11:53:56.0874745Z           "evidence": []
2026-06-21T11:53:56.0874823Z         },
2026-06-21T11:53:56.0874918Z         "unit": {
2026-06-21T11:53:56.0875012Z           "complete": false,
2026-06-21T11:53:56.0875113Z           "evidence": []
2026-06-21T11:53:56.0875190Z         }
2026-06-21T11:53:56.0875275Z       }
2026-06-21T11:53:56.0875364Z     },
2026-06-21T11:53:56.0875450Z     {
2026-06-21T11:53:56.0875555Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T11:53:56.0876682Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T11:53:56.0876789Z       "requiredStages": [
2026-06-21T11:53:56.0876878Z         "impl",
2026-06-21T11:53:56.0876968Z         "unit"
2026-06-21T11:53:56.0877055Z       ],
2026-06-21T11:53:56.0877146Z       "stages": {
2026-06-21T11:53:56.0877237Z         "doc": {
2026-06-21T11:53:56.0877336Z           "complete": false,
2026-06-21T11:53:56.0877433Z           "evidence": []
2026-06-21T11:53:56.0877526Z         },
2026-06-21T11:53:56.0877607Z         "impl": {
2026-06-21T11:53:56.0877695Z           "complete": true,
2026-06-21T11:53:56.0877786Z           "evidence": [
2026-06-21T11:53:56.0877865Z             {
2026-06-21T11:53:56.0877971Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0878057Z               "line": 275
2026-06-21T11:53:56.0878147Z             }
2026-06-21T11:53:56.0878227Z           ]
2026-06-21T11:53:56.0878317Z         },
2026-06-21T11:53:56.0878399Z         "int": {
2026-06-21T11:53:56.0878494Z           "complete": false,
2026-06-21T11:53:56.0878575Z           "evidence": []
2026-06-21T11:53:56.0878661Z         },
2026-06-21T11:53:56.0878742Z         "unit": {
2026-06-21T11:53:56.0878828Z           "complete": true,
2026-06-21T11:53:56.0878913Z           "evidence": [
2026-06-21T11:53:56.0879076Z             {
2026-06-21T11:53:56.0879194Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.0879281Z               "line": 400
2026-06-21T11:53:56.0879381Z             }
2026-06-21T11:53:56.0879462Z           ]
2026-06-21T11:53:56.0879547Z         }
2026-06-21T11:53:56.0879634Z       }
2026-06-21T11:53:56.0879720Z     },
2026-06-21T11:53:56.0879796Z     {
2026-06-21T11:53:56.0879905Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T11:53:56.0881494Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T11:53:56.0881690Z       "requiredStages": [
2026-06-21T11:53:56.0881771Z         "impl",
2026-06-21T11:53:56.0881957Z         "unit"
2026-06-21T11:53:56.0882047Z       ],
2026-06-21T11:53:56.0882138Z       "stages": {
2026-06-21T11:53:56.0882220Z         "doc": {
2026-06-21T11:53:56.0882315Z           "complete": false,
2026-06-21T11:53:56.0882405Z           "evidence": []
2026-06-21T11:53:56.0882487Z         },
2026-06-21T11:53:56.0882582Z         "impl": {
2026-06-21T11:53:56.0882667Z           "complete": true,
2026-06-21T11:53:56.0882763Z           "evidence": [
2026-06-21T11:53:56.0882850Z             {
2026-06-21T11:53:56.0882967Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.0883054Z               "line": 654
2026-06-21T11:53:56.0883135Z             }
2026-06-21T11:53:56.0883222Z           ]
2026-06-21T11:53:56.0883306Z         },
2026-06-21T11:53:56.0883391Z         "int": {
2026-06-21T11:53:56.0883496Z           "complete": false,
2026-06-21T11:53:56.0883585Z           "evidence": []
2026-06-21T11:53:56.0883670Z         },
2026-06-21T11:53:56.0883761Z         "unit": {
2026-06-21T11:53:56.0883862Z           "complete": true,
2026-06-21T11:53:56.0883947Z           "evidence": [
2026-06-21T11:53:56.0884032Z             {
2026-06-21T11:53:56.0884157Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.0884248Z               "line": 1078
2026-06-21T11:53:56.0884337Z             },
2026-06-21T11:53:56.0884419Z             {
2026-06-21T11:53:56.0884534Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.0884624Z               "line": 1092
2026-06-21T11:53:56.0884710Z             }
2026-06-21T11:53:56.0884796Z           ]
2026-06-21T11:53:56.0884882Z         }
2026-06-21T11:53:56.0884963Z       }
2026-06-21T11:53:56.0885048Z     },
2026-06-21T11:53:56.0885125Z     {
2026-06-21T11:53:56.0885224Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T11:53:56.0886852Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T11:53:56.0889846Z       "requiredStages": [],
2026-06-21T11:53:56.0889956Z       "stages": {
2026-06-21T11:53:56.0890037Z         "doc": {
2026-06-21T11:53:56.0890146Z           "complete": false,
2026-06-21T11:53:56.0890233Z           "evidence": []
2026-06-21T11:53:56.0890317Z         },
2026-06-21T11:53:56.0890403Z         "impl": {
2026-06-21T11:53:56.0890495Z           "complete": false,
2026-06-21T11:53:56.0890581Z           "evidence": []
2026-06-21T11:53:56.0890670Z         },
2026-06-21T11:53:56.0890771Z         "int": {
2026-06-21T11:53:56.0890853Z           "complete": false,
2026-06-21T11:53:56.0890956Z           "evidence": []
2026-06-21T11:53:56.0891032Z         },
2026-06-21T11:53:56.0891117Z         "unit": {
2026-06-21T11:53:56.0891199Z           "complete": false,
2026-06-21T11:53:56.0891283Z           "evidence": []
2026-06-21T11:53:56.0891368Z         }
2026-06-21T11:53:56.0891454Z       }
2026-06-21T11:53:56.0891530Z     },
2026-06-21T11:53:56.0891616Z     {
2026-06-21T11:53:56.0891716Z       "id": "REQ-PRES-1",
2026-06-21T11:53:56.0893124Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T11:53:56.0893386Z       "requiredStages": [
2026-06-21T11:53:56.0893467Z         "impl",
2026-06-21T11:53:56.0893638Z         "unit",
2026-06-21T11:53:56.0893725Z         "int"
2026-06-21T11:53:56.0893805Z       ],
2026-06-21T11:53:56.0893894Z       "stages": {
2026-06-21T11:53:56.0893979Z         "doc": {
2026-06-21T11:53:56.0894066Z           "complete": true,
2026-06-21T11:53:56.0894159Z           "evidence": [
2026-06-21T11:53:56.0894245Z             {
2026-06-21T11:53:56.0894349Z               "path": "docs/DEFERRED.md",
2026-06-21T11:53:56.0894436Z               "line": 11
2026-06-21T11:53:56.0894521Z             }
2026-06-21T11:53:56.0894597Z           ]
2026-06-21T11:53:56.0894684Z         },
2026-06-21T11:53:56.0894774Z         "impl": {
2026-06-21T11:53:56.0894864Z           "complete": true,
2026-06-21T11:53:56.0894940Z           "evidence": [
2026-06-21T11:53:56.0895023Z             {
2026-06-21T11:53:56.0895156Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0895255Z               "line": 515
2026-06-21T11:53:56.0895338Z             },
2026-06-21T11:53:56.0895418Z             {
2026-06-21T11:53:56.0895542Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.0895638Z               "line": 567
2026-06-21T11:53:56.0895709Z             },
2026-06-21T11:53:56.0895799Z             {
2026-06-21T11:53:56.0895914Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0896000Z               "line": 188
2026-06-21T11:53:56.0896071Z             },
2026-06-21T11:53:56.0896157Z             {
2026-06-21T11:53:56.0896272Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0896358Z               "line": 214
2026-06-21T11:53:56.0896442Z             },
2026-06-21T11:53:56.0896527Z             {
2026-06-21T11:53:56.0896642Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0896740Z               "line": 28
2026-06-21T11:53:56.0896825Z             },
2026-06-21T11:53:56.0896912Z             {
2026-06-21T11:53:56.0897017Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0897107Z               "line": 105
2026-06-21T11:53:56.0897193Z             },
2026-06-21T11:53:56.0897270Z             {
2026-06-21T11:53:56.0897394Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0897478Z               "line": 161
2026-06-21T11:53:56.0897566Z             },
2026-06-21T11:53:56.0897656Z             {
2026-06-21T11:53:56.0897765Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0897861Z               "line": 180
2026-06-21T11:53:56.0897933Z             },
2026-06-21T11:53:56.0898017Z             {
2026-06-21T11:53:56.0898142Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0898233Z               "line": 421
2026-06-21T11:53:56.0898318Z             },
2026-06-21T11:53:56.0898390Z             {
2026-06-21T11:53:56.0898520Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.0898609Z               "line": 289
2026-06-21T11:53:56.0898695Z             },
2026-06-21T11:53:56.0898781Z             {
2026-06-21T11:53:56.0898910Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.0899076Z               "line": 336
2026-06-21T11:53:56.0899154Z             },
2026-06-21T11:53:56.0899239Z             {
2026-06-21T11:53:56.0899347Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.0899437Z               "line": 362
2026-06-21T11:53:56.0899519Z             },
2026-06-21T11:53:56.0899601Z             {
2026-06-21T11:53:56.0899723Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0899805Z               "line": 100
2026-06-21T11:53:56.0899881Z             }
2026-06-21T11:53:56.0899958Z           ]
2026-06-21T11:53:56.0900048Z         },
2026-06-21T11:53:56.0900130Z         "int": {
2026-06-21T11:53:56.0900229Z           "complete": true,
2026-06-21T11:53:56.0900319Z           "evidence": [
2026-06-21T11:53:56.0900502Z             {
2026-06-21T11:53:56.0900629Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0900793Z               "line": 563
2026-06-21T11:53:56.0900877Z             },
2026-06-21T11:53:56.0900963Z             {
2026-06-21T11:53:56.0901084Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0901164Z               "line": 747
2026-06-21T11:53:56.0901249Z             },
2026-06-21T11:53:56.0901331Z             {
2026-06-21T11:53:56.0901442Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0901526Z               "line": 1165
2026-06-21T11:53:56.0901606Z             }
2026-06-21T11:53:56.0901692Z           ]
2026-06-21T11:53:56.0901778Z         },
2026-06-21T11:53:56.0901857Z         "unit": {
2026-06-21T11:53:56.0901943Z           "complete": true,
2026-06-21T11:53:56.0902024Z           "evidence": [
2026-06-21T11:53:56.0902110Z             {
2026-06-21T11:53:56.0902224Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.0902319Z               "line": 674
2026-06-21T11:53:56.0902406Z             },
2026-06-21T11:53:56.0902487Z             {
2026-06-21T11:53:56.0902614Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0902706Z               "line": 238
2026-06-21T11:53:56.0902782Z             },
2026-06-21T11:53:56.0902867Z             {
2026-06-21T11:53:56.0902982Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0903068Z               "line": 269
2026-06-21T11:53:56.0903149Z             },
2026-06-21T11:53:56.0903239Z             {
2026-06-21T11:53:56.0903355Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0903435Z               "line": 305
2026-06-21T11:53:56.0903516Z             },
2026-06-21T11:53:56.0903597Z             {
2026-06-21T11:53:56.0903717Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T11:53:56.0903792Z               "line": 336
2026-06-21T11:53:56.0903883Z             },
2026-06-21T11:53:56.0903965Z             {
2026-06-21T11:53:56.0904097Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.0904184Z               "line": 1217
2026-06-21T11:53:56.0904270Z             },
2026-06-21T11:53:56.0904356Z             {
2026-06-21T11:53:56.0904464Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.0904549Z               "line": 1163
2026-06-21T11:53:56.0904631Z             }
2026-06-21T11:53:56.0904715Z           ]
2026-06-21T11:53:56.0904805Z         }
2026-06-21T11:53:56.0904886Z       }
2026-06-21T11:53:56.0904967Z     },
2026-06-21T11:53:56.0905039Z     {
2026-06-21T11:53:56.0905134Z       "id": "REQ-RC-1",
2026-06-21T11:53:56.0907159Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T11:53:56.0907272Z       "requiredStages": [
2026-06-21T11:53:56.0907357Z         "impl",
2026-06-21T11:53:56.0907433Z         "unit",
2026-06-21T11:53:56.0907519Z         "int"
2026-06-21T11:53:56.0907597Z       ],
2026-06-21T11:53:56.0907686Z       "stages": {
2026-06-21T11:53:56.0907772Z         "doc": {
2026-06-21T11:53:56.0907868Z           "complete": false,
2026-06-21T11:53:56.0907963Z           "evidence": []
2026-06-21T11:53:56.0908038Z         },
2026-06-21T11:53:56.0908131Z         "impl": {
2026-06-21T11:53:56.0908216Z           "complete": true,
2026-06-21T11:53:56.0908387Z           "evidence": [
2026-06-21T11:53:56.0908464Z             {
2026-06-21T11:53:56.0908654Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.0908735Z               "line": 984
2026-06-21T11:53:56.0908822Z             },
2026-06-21T11:53:56.0908902Z             {
2026-06-21T11:53:56.0909099Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0909193Z               "line": 2177
2026-06-21T11:53:56.0909274Z             },
2026-06-21T11:53:56.0909365Z             {
2026-06-21T11:53:56.0909489Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.0909569Z               "line": 1017
2026-06-21T11:53:56.0909651Z             },
2026-06-21T11:53:56.0909729Z             {
2026-06-21T11:53:56.0909841Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.0909926Z               "line": 1051
2026-06-21T11:53:56.0910012Z             },
2026-06-21T11:53:56.0910094Z             {
2026-06-21T11:53:56.0910198Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0910288Z               "line": 22
2026-06-21T11:53:56.0910379Z             },
2026-06-21T11:53:56.0910460Z             {
2026-06-21T11:53:56.0910560Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0910646Z               "line": 701
2026-06-21T11:53:56.0910723Z             }
2026-06-21T11:53:56.0910804Z           ]
2026-06-21T11:53:56.0910880Z         },
2026-06-21T11:53:56.0910966Z         "int": {
2026-06-21T11:53:56.0911052Z           "complete": true,
2026-06-21T11:53:56.0911142Z           "evidence": [
2026-06-21T11:53:56.0911222Z             {
2026-06-21T11:53:56.0911338Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0911424Z               "line": 258
2026-06-21T11:53:56.0911509Z             },
2026-06-21T11:53:56.0911591Z             {
2026-06-21T11:53:56.0911710Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0911795Z               "line": 285
2026-06-21T11:53:56.0911881Z             },
2026-06-21T11:53:56.0911963Z             {
2026-06-21T11:53:56.0912077Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0912162Z               "line": 413
2026-06-21T11:53:56.0912242Z             }
2026-06-21T11:53:56.0912314Z           ]
2026-06-21T11:53:56.0912389Z         },
2026-06-21T11:53:56.0912469Z         "unit": {
2026-06-21T11:53:56.0912564Z           "complete": true,
2026-06-21T11:53:56.0912641Z           "evidence": [
2026-06-21T11:53:56.0912728Z             {
2026-06-21T11:53:56.0912846Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.0912927Z               "line": 1415
2026-06-21T11:53:56.0913013Z             },
2026-06-21T11:53:56.0913094Z             {
2026-06-21T11:53:56.0913193Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0913281Z               "line": 1133
2026-06-21T11:53:56.0913371Z             },
2026-06-21T11:53:56.0913451Z             {
2026-06-21T11:53:56.0913552Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0913642Z               "line": 1162
2026-06-21T11:53:56.0913719Z             },
2026-06-21T11:53:56.0913804Z             {
2026-06-21T11:53:56.0913900Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0913985Z               "line": 1175
2026-06-21T11:53:56.0914071Z             }
2026-06-21T11:53:56.0914152Z           ]
2026-06-21T11:53:56.0914235Z         }
2026-06-21T11:53:56.0914319Z       }
2026-06-21T11:53:56.0914400Z     },
2026-06-21T11:53:56.0914482Z     {
2026-06-21T11:53:56.0914583Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T11:53:56.0920434Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T11:53:56.0920778Z       "requiredStages": [
2026-06-21T11:53:56.0920858Z         "doc",
2026-06-21T11:53:56.0920944Z         "impl",
2026-06-21T11:53:56.0921025Z         "unit"
2026-06-21T11:53:56.0921111Z       ],
2026-06-21T11:53:56.0921192Z       "stages": {
2026-06-21T11:53:56.0921274Z         "doc": {
2026-06-21T11:53:56.0921369Z           "complete": true,
2026-06-21T11:53:56.0921454Z           "evidence": [
2026-06-21T11:53:56.0921535Z             {
2026-06-21T11:53:56.0921636Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0921722Z               "line": 345
2026-06-21T11:53:56.0921812Z             },
2026-06-21T11:53:56.0921899Z             {
2026-06-21T11:53:56.0922003Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0922084Z               "line": 440
2026-06-21T11:53:56.0922170Z             }
2026-06-21T11:53:56.0922252Z           ]
2026-06-21T11:53:56.0922336Z         },
2026-06-21T11:53:56.0922422Z         "impl": {
2026-06-21T11:53:56.0922514Z           "complete": true,
2026-06-21T11:53:56.0922599Z           "evidence": [
2026-06-21T11:53:56.0922684Z             {
2026-06-21T11:53:56.0922788Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0922874Z               "line": 226
2026-06-21T11:53:56.0922950Z             },
2026-06-21T11:53:56.0923029Z             {
2026-06-21T11:53:56.0923129Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0923216Z               "line": 285
2026-06-21T11:53:56.0923297Z             },
2026-06-21T11:53:56.0923377Z             {
2026-06-21T11:53:56.0923473Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0923554Z               "line": 300
2026-06-21T11:53:56.0923626Z             },
2026-06-21T11:53:56.0923706Z             {
2026-06-21T11:53:56.0923807Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0923883Z               "line": 315
2026-06-21T11:53:56.0923964Z             },
2026-06-21T11:53:56.0924030Z             {
2026-06-21T11:53:56.0924122Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0924212Z               "line": 364
2026-06-21T11:53:56.0924298Z             }
2026-06-21T11:53:56.0924383Z           ]
2026-06-21T11:53:56.0924465Z         },
2026-06-21T11:53:56.0924550Z         "int": {
2026-06-21T11:53:56.0924636Z           "complete": false,
2026-06-21T11:53:56.0924717Z           "evidence": []
2026-06-21T11:53:56.0924804Z         },
2026-06-21T11:53:56.0924888Z         "unit": {
2026-06-21T11:53:56.0925047Z           "complete": true,
2026-06-21T11:53:56.0925128Z           "evidence": [
2026-06-21T11:53:56.0925266Z             {
2026-06-21T11:53:56.0925367Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0925448Z               "line": 1190
2026-06-21T11:53:56.0925527Z             },
2026-06-21T11:53:56.0925608Z             {
2026-06-21T11:53:56.0925713Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0925789Z               "line": 1305
2026-06-21T11:53:56.0925873Z             }
2026-06-21T11:53:56.0925949Z           ]
2026-06-21T11:53:56.0926049Z         }
2026-06-21T11:53:56.0926131Z       }
2026-06-21T11:53:56.0926216Z     },
2026-06-21T11:53:56.0926296Z     {
2026-06-21T11:53:56.0926389Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T11:53:56.0930810Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T11:53:56.0930929Z       "requiredStages": [
2026-06-21T11:53:56.0931018Z         "doc",
2026-06-21T11:53:56.0931103Z         "impl",
2026-06-21T11:53:56.0931190Z         "unit"
2026-06-21T11:53:56.0931276Z       ],
2026-06-21T11:53:56.0931361Z       "stages": {
2026-06-21T11:53:56.0931433Z         "doc": {
2026-06-21T11:53:56.0931524Z           "complete": true,
2026-06-21T11:53:56.0931605Z           "evidence": [
2026-06-21T11:53:56.0931690Z             {
2026-06-21T11:53:56.0931801Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0931886Z               "line": 461
2026-06-21T11:53:56.0931967Z             }
2026-06-21T11:53:56.0932052Z           ]
2026-06-21T11:53:56.0932139Z         },
2026-06-21T11:53:56.0932225Z         "impl": {
2026-06-21T11:53:56.0932315Z           "complete": true,
2026-06-21T11:53:56.0932401Z           "evidence": [
2026-06-21T11:53:56.0932478Z             {
2026-06-21T11:53:56.0932586Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0932663Z               "line": 421
2026-06-21T11:53:56.0932750Z             },
2026-06-21T11:53:56.0932835Z             {
2026-06-21T11:53:56.0932934Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0933021Z               "line": 437
2026-06-21T11:53:56.0933103Z             }
2026-06-21T11:53:56.0933192Z           ]
2026-06-21T11:53:56.0933272Z         },
2026-06-21T11:53:56.0933357Z         "int": {
2026-06-21T11:53:56.0933458Z           "complete": false,
2026-06-21T11:53:56.0933542Z           "evidence": []
2026-06-21T11:53:56.0933627Z         },
2026-06-21T11:53:56.0933704Z         "unit": {
2026-06-21T11:53:56.0933795Z           "complete": true,
2026-06-21T11:53:56.0933885Z           "evidence": [
2026-06-21T11:53:56.0934061Z             {
2026-06-21T11:53:56.0934167Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0934462Z               "line": 1440
2026-06-21T11:53:56.0934543Z             },
2026-06-21T11:53:56.0934629Z             {
2026-06-21T11:53:56.0934739Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0934825Z               "line": 1459
2026-06-21T11:53:56.0934905Z             },
2026-06-21T11:53:56.0934992Z             {
2026-06-21T11:53:56.0935087Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0935173Z               "line": 1471
2026-06-21T11:53:56.0935258Z             },
2026-06-21T11:53:56.0935340Z             {
2026-06-21T11:53:56.0935435Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0935530Z               "line": 1499
2026-06-21T11:53:56.0935607Z             }
2026-06-21T11:53:56.0935688Z           ]
2026-06-21T11:53:56.0935773Z         }
2026-06-21T11:53:56.0935849Z       }
2026-06-21T11:53:56.0935941Z     },
2026-06-21T11:53:56.0936023Z     {
2026-06-21T11:53:56.0936125Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T11:53:56.0940950Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T11:53:56.0941065Z       "requiredStages": [
2026-06-21T11:53:56.0941150Z         "doc",
2026-06-21T11:53:56.0941235Z         "impl",
2026-06-21T11:53:56.0941351Z         "unit"
2026-06-21T11:53:56.0941447Z       ],
2026-06-21T11:53:56.0941535Z       "stages": {
2026-06-21T11:53:56.0941625Z         "doc": {
2026-06-21T11:53:56.0941721Z           "complete": true,
2026-06-21T11:53:56.0941822Z           "evidence": [
2026-06-21T11:53:56.0941902Z             {
2026-06-21T11:53:56.0942007Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T11:53:56.0942098Z               "line": 447
2026-06-21T11:53:56.0942184Z             }
2026-06-21T11:53:56.0942274Z           ]
2026-06-21T11:53:56.0942356Z         },
2026-06-21T11:53:56.0942446Z         "impl": {
2026-06-21T11:53:56.0942527Z           "complete": true,
2026-06-21T11:53:56.0942607Z           "evidence": [
2026-06-21T11:53:56.0942690Z             {
2026-06-21T11:53:56.0942794Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0942889Z               "line": 395
2026-06-21T11:53:56.0942971Z             },
2026-06-21T11:53:56.0943057Z             {
2026-06-21T11:53:56.0943156Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0943246Z               "line": 411
2026-06-21T11:53:56.0943442Z             },
2026-06-21T11:53:56.0943523Z             {
2026-06-21T11:53:56.0943629Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0943800Z               "line": 454
2026-06-21T11:53:56.0943890Z             },
2026-06-21T11:53:56.0943971Z             {
2026-06-21T11:53:56.0944074Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0944163Z               "line": 468
2026-06-21T11:53:56.0944240Z             },
2026-06-21T11:53:56.0944326Z             {
2026-06-21T11:53:56.0944426Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0944516Z               "line": 479
2026-06-21T11:53:56.0944598Z             }
2026-06-21T11:53:56.0944684Z           ]
2026-06-21T11:53:56.0944765Z         },
2026-06-21T11:53:56.0944850Z         "int": {
2026-06-21T11:53:56.0944951Z           "complete": false,
2026-06-21T11:53:56.0945032Z           "evidence": []
2026-06-21T11:53:56.0945117Z         },
2026-06-21T11:53:56.0945198Z         "unit": {
2026-06-21T11:53:56.0945290Z           "complete": true,
2026-06-21T11:53:56.0945385Z           "evidence": [
2026-06-21T11:53:56.0945469Z             {
2026-06-21T11:53:56.0945571Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0945661Z               "line": 1381
2026-06-21T11:53:56.0945742Z             },
2026-06-21T11:53:56.0945818Z             {
2026-06-21T11:53:56.0945924Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0946009Z               "line": 1402
2026-06-21T11:53:56.0946095Z             },
2026-06-21T11:53:56.0946177Z             {
2026-06-21T11:53:56.0946282Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0946361Z               "line": 1423
2026-06-21T11:53:56.0946448Z             }
2026-06-21T11:53:56.0946535Z           ]
2026-06-21T11:53:56.0946615Z         }
2026-06-21T11:53:56.0946695Z       }
2026-06-21T11:53:56.0946780Z     },
2026-06-21T11:53:56.0946861Z     {
2026-06-21T11:53:56.0946965Z       "id": "REQ-RCVIEW-1",
2026-06-21T11:53:56.0951486Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T11:53:56.0951606Z       "requiredStages": [
2026-06-21T11:53:56.0951692Z         "doc",
2026-06-21T11:53:56.0951776Z         "impl",
2026-06-21T11:53:56.0951863Z         "unit",
2026-06-21T11:53:56.0951940Z         "int"
2026-06-21T11:53:56.0952026Z       ],
2026-06-21T11:53:56.0952109Z       "stages": {
2026-06-21T11:53:56.0952190Z         "doc": {
2026-06-21T11:53:56.0952291Z           "complete": true,
2026-06-21T11:53:56.0952373Z           "evidence": [
2026-06-21T11:53:56.0952458Z             {
2026-06-21T11:53:56.0952658Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0952753Z               "line": 342
2026-06-21T11:53:56.0952843Z             }
2026-06-21T11:53:56.0953021Z           ]
2026-06-21T11:53:56.0953106Z         },
2026-06-21T11:53:56.0953187Z         "impl": {
2026-06-21T11:53:56.0953279Z           "complete": true,
2026-06-21T11:53:56.0953359Z           "evidence": [
2026-06-21T11:53:56.0953430Z             {
2026-06-21T11:53:56.0953560Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:56.0953645Z               "line": 410
2026-06-21T11:53:56.0953726Z             },
2026-06-21T11:53:56.0953811Z             {
2026-06-21T11:53:56.0953932Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0954016Z               "line": 705
2026-06-21T11:53:56.0954103Z             },
2026-06-21T11:53:56.0954189Z             {
2026-06-21T11:53:56.0954289Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0954383Z               "line": 716
2026-06-21T11:53:56.0954464Z             },
2026-06-21T11:53:56.0954550Z             {
2026-06-21T11:53:56.0954658Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0954747Z               "line": 41
2026-06-21T11:53:56.0954829Z             },
2026-06-21T11:53:56.0954916Z             {
2026-06-21T11:53:56.0955039Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0955120Z               "line": 62
2026-06-21T11:53:56.0955201Z             },
2026-06-21T11:53:56.0955287Z             {
2026-06-21T11:53:56.0955400Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0955483Z               "line": 309
2026-06-21T11:53:56.0955568Z             },
2026-06-21T11:53:56.0955658Z             {
2026-06-21T11:53:56.0955754Z               "path": "crates/spt/src/rc.rs",
2026-06-21T11:53:56.0955845Z               "line": 701
2026-06-21T11:53:56.0955930Z             }
2026-06-21T11:53:56.0956021Z           ]
2026-06-21T11:53:56.0956107Z         },
2026-06-21T11:53:56.0956193Z         "int": {
2026-06-21T11:53:56.0956293Z           "complete": true,
2026-06-21T11:53:56.0956383Z           "evidence": [
2026-06-21T11:53:56.0956479Z             {
2026-06-21T11:53:56.0956597Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0956688Z               "line": 913
2026-06-21T11:53:56.0956771Z             },
2026-06-21T11:53:56.0956851Z             {
2026-06-21T11:53:56.0956970Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0957047Z               "line": 953
2026-06-21T11:53:56.0957133Z             },
2026-06-21T11:53:56.0957217Z             {
2026-06-21T11:53:56.0957331Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0957426Z               "line": 1000
2026-06-21T11:53:56.0957506Z             },
2026-06-21T11:53:56.0957591Z             {
2026-06-21T11:53:56.0957706Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0957801Z               "line": 1112
2026-06-21T11:53:56.0957896Z             }
2026-06-21T11:53:56.0957982Z           ]
2026-06-21T11:53:56.0958069Z         },
2026-06-21T11:53:56.0958159Z         "unit": {
2026-06-21T11:53:56.0958253Z           "complete": true,
2026-06-21T11:53:56.0958335Z           "evidence": [
2026-06-21T11:53:56.0958422Z             {
2026-06-21T11:53:56.0958531Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0958621Z               "line": 175
2026-06-21T11:53:56.0958707Z             },
2026-06-21T11:53:56.0958788Z             {
2026-06-21T11:53:56.0958907Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T11:53:56.0959070Z               "line": 195
2026-06-21T11:53:56.0959149Z             }
2026-06-21T11:53:56.0959231Z           ]
2026-06-21T11:53:56.0959309Z         }
2026-06-21T11:53:56.0959390Z       }
2026-06-21T11:53:56.0959483Z     },
2026-06-21T11:53:56.0959570Z     {
2026-06-21T11:53:56.0959647Z       "id": "REQ-REACH-1",
2026-06-21T11:53:56.0959803Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T11:53:56.0959993Z       "requiredStages": [
2026-06-21T11:53:56.0960143Z         "impl",
2026-06-21T11:53:56.0960224Z         "unit",
2026-06-21T11:53:56.0960310Z         "int"
2026-06-21T11:53:56.0960393Z       ],
2026-06-21T11:53:56.0960477Z       "stages": {
2026-06-21T11:53:56.0960572Z         "doc": {
2026-06-21T11:53:56.0960655Z           "complete": false,
2026-06-21T11:53:56.0960745Z           "evidence": []
2026-06-21T11:53:56.0960830Z         },
2026-06-21T11:53:56.0960907Z         "impl": {
2026-06-21T11:53:56.0960997Z           "complete": true,
2026-06-21T11:53:56.0961083Z           "evidence": [
2026-06-21T11:53:56.0961163Z             {
2026-06-21T11:53:56.0961265Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.0961354Z               "line": 705
2026-06-21T11:53:56.0961444Z             },
2026-06-21T11:53:56.0961526Z             {
2026-06-21T11:53:56.0961650Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T11:53:56.0961736Z               "line": 76
2026-06-21T11:53:56.0961817Z             },
2026-06-21T11:53:56.0961914Z             {
2026-06-21T11:53:56.0962017Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T11:53:56.0962103Z               "line": 222
2026-06-21T11:53:56.0962190Z             },
2026-06-21T11:53:56.0962271Z             {
2026-06-21T11:53:56.0962365Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T11:53:56.0962461Z               "line": 422
2026-06-21T11:53:56.0962548Z             },
2026-06-21T11:53:56.0962628Z             {
2026-06-21T11:53:56.0962746Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T11:53:56.0962822Z               "line": 529
2026-06-21T11:53:56.0962904Z             },
2026-06-21T11:53:56.0962984Z             {
2026-06-21T11:53:56.0963103Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T11:53:56.0963200Z               "line": 39
2026-06-21T11:53:56.0963281Z             },
2026-06-21T11:53:56.0963370Z             {
2026-06-21T11:53:56.0963486Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0963585Z               "line": 301
2026-06-21T11:53:56.0963661Z             },
2026-06-21T11:53:56.0963747Z             {
2026-06-21T11:53:56.0963857Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T11:53:56.0963948Z               "line": 88
2026-06-21T11:53:56.0964038Z             },
2026-06-21T11:53:56.0964115Z             {
2026-06-21T11:53:56.0964224Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T11:53:56.0964314Z               "line": 98
2026-06-21T11:53:56.0964396Z             },
2026-06-21T11:53:56.0964483Z             {
2026-06-21T11:53:56.0964591Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0964687Z               "line": 233
2026-06-21T11:53:56.0964774Z             }
2026-06-21T11:53:56.0964854Z           ]
2026-06-21T11:53:56.0964939Z         },
2026-06-21T11:53:56.0965019Z         "int": {
2026-06-21T11:53:56.0965115Z           "complete": true,
2026-06-21T11:53:56.0965204Z           "evidence": [
2026-06-21T11:53:56.0965289Z             {
2026-06-21T11:53:56.0965423Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0965519Z               "line": 415
2026-06-21T11:53:56.0965594Z             },
2026-06-21T11:53:56.0965680Z             {
2026-06-21T11:53:56.0965795Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.0965880Z               "line": 520
2026-06-21T11:53:56.0965960Z             },
2026-06-21T11:53:56.0966048Z             {
2026-06-21T11:53:56.0966176Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0966261Z               "line": 998
2026-06-21T11:53:56.0966348Z             },
2026-06-21T11:53:56.0966433Z             {
2026-06-21T11:53:56.0966548Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.0966643Z               "line": 1383
2026-06-21T11:53:56.0966729Z             }
2026-06-21T11:53:56.0966896Z           ]
2026-06-21T11:53:56.0966977Z         },
2026-06-21T11:53:56.0967068Z         "unit": {
2026-06-21T11:53:56.0967220Z           "complete": true,
2026-06-21T11:53:56.0967297Z           "evidence": [
2026-06-21T11:53:56.0967392Z             {
2026-06-21T11:53:56.0967501Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T11:53:56.0967598Z               "line": 639
2026-06-21T11:53:56.0967674Z             },
2026-06-21T11:53:56.0967763Z             {
2026-06-21T11:53:56.0967872Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T11:53:56.0967958Z               "line": 660
2026-06-21T11:53:56.0968043Z             },
2026-06-21T11:53:56.0968113Z             {
2026-06-21T11:53:56.0968227Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T11:53:56.0968313Z               "line": 768
2026-06-21T11:53:56.0968400Z             },
2026-06-21T11:53:56.0968480Z             {
2026-06-21T11:53:56.0968590Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T11:53:56.0968681Z               "line": 93
2026-06-21T11:53:56.0968766Z             },
2026-06-21T11:53:56.0968856Z             {
2026-06-21T11:53:56.0969053Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T11:53:56.0969133Z               "line": 224
2026-06-21T11:53:56.0969214Z             },
2026-06-21T11:53:56.0969296Z             {
2026-06-21T11:53:56.0969424Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T11:53:56.0969510Z               "line": 96
2026-06-21T11:53:56.0969606Z             },
2026-06-21T11:53:56.0969687Z             {
2026-06-21T11:53:56.0969796Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T11:53:56.0969879Z               "line": 146
2026-06-21T11:53:56.0969959Z             },
2026-06-21T11:53:56.0970043Z             {
2026-06-21T11:53:56.0970154Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.0970246Z               "line": 698
2026-06-21T11:53:56.0970321Z             },
2026-06-21T11:53:56.0970405Z             {
2026-06-21T11:53:56.0970520Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T11:53:56.0970605Z               "line": 118
2026-06-21T11:53:56.0970689Z             },
2026-06-21T11:53:56.0970775Z             {
2026-06-21T11:53:56.0970885Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T11:53:56.0970967Z               "line": 148
2026-06-21T11:53:56.0971051Z             },
2026-06-21T11:53:56.0971137Z             {
2026-06-21T11:53:56.0971252Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.0971333Z               "line": 928
2026-06-21T11:53:56.0971414Z             }
2026-06-21T11:53:56.0971505Z           ]
2026-06-21T11:53:56.0971595Z         }
2026-06-21T11:53:56.0971680Z       }
2026-06-21T11:53:56.0971767Z     },
2026-06-21T11:53:56.0971849Z     {
2026-06-21T11:53:56.0971933Z       "id": "REQ-REACH-2",
2026-06-21T11:53:56.0972086Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T11:53:56.0972192Z       "requiredStages": [],
2026-06-21T11:53:56.0972278Z       "stages": {
2026-06-21T11:53:56.0972363Z         "doc": {
2026-06-21T11:53:56.0972464Z           "complete": false,
2026-06-21T11:53:56.0972544Z           "evidence": []
2026-06-21T11:53:56.0975290Z         },
2026-06-21T11:53:56.0975404Z         "impl": {
2026-06-21T11:53:56.0975508Z           "complete": false,
2026-06-21T11:53:56.0975598Z           "evidence": []
2026-06-21T11:53:56.0975680Z         },
2026-06-21T11:53:56.0975768Z         "int": {
2026-06-21T11:53:56.0975854Z           "complete": false,
2026-06-21T11:53:56.0975958Z           "evidence": []
2026-06-21T11:53:56.0976040Z         },
2026-06-21T11:53:56.0976125Z         "unit": {
2026-06-21T11:53:56.0976215Z           "complete": false,
2026-06-21T11:53:56.0976302Z           "evidence": []
2026-06-21T11:53:56.0976379Z         }
2026-06-21T11:53:56.0976459Z       }
2026-06-21T11:53:56.0976549Z     },
2026-06-21T11:53:56.0976632Z     {
2026-06-21T11:53:56.0976879Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T11:53:56.0980500Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T11:53:56.0980715Z       "requiredStages": [
2026-06-21T11:53:56.0980796Z         "doc",
2026-06-21T11:53:56.0980886Z         "impl",
2026-06-21T11:53:56.0980961Z         "unit",
2026-06-21T11:53:56.0981041Z         "int"
2026-06-21T11:53:56.0981118Z       ],
2026-06-21T11:53:56.0981198Z       "stages": {
2026-06-21T11:53:56.0981287Z         "doc": {
2026-06-21T11:53:56.0981383Z           "complete": true,
2026-06-21T11:53:56.0981470Z           "evidence": [
2026-06-21T11:53:56.0981555Z             {
2026-06-21T11:53:56.0981654Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.0981746Z               "line": 372
2026-06-21T11:53:56.0981826Z             }
2026-06-21T11:53:56.0981912Z           ]
2026-06-21T11:53:56.0982002Z         },
2026-06-21T11:53:56.0982080Z         "impl": {
2026-06-21T11:53:56.0982170Z           "complete": true,
2026-06-21T11:53:56.0982255Z           "evidence": [
2026-06-21T11:53:56.0982342Z             {
2026-06-21T11:53:56.0982466Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0982556Z               "line": 110
2026-06-21T11:53:56.0982642Z             }
2026-06-21T11:53:56.0982719Z           ]
2026-06-21T11:53:56.0982808Z         },
2026-06-21T11:53:56.0982894Z         "int": {
2026-06-21T11:53:56.0982981Z           "complete": true,
2026-06-21T11:53:56.0983067Z           "evidence": [
2026-06-21T11:53:56.0983146Z             {
2026-06-21T11:53:56.0983296Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T11:53:56.0983382Z               "line": 26
2026-06-21T11:53:56.0983471Z             }
2026-06-21T11:53:56.0983552Z           ]
2026-06-21T11:53:56.0983640Z         },
2026-06-21T11:53:56.0983716Z         "unit": {
2026-06-21T11:53:56.0983813Z           "complete": true,
2026-06-21T11:53:56.0983899Z           "evidence": [
2026-06-21T11:53:56.0983985Z             {
2026-06-21T11:53:56.0984101Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T11:53:56.0984185Z               "line": 320
2026-06-21T11:53:56.0984277Z             }
2026-06-21T11:53:56.0984348Z           ]
2026-06-21T11:53:56.0984434Z         }
2026-06-21T11:53:56.0984519Z       }
2026-06-21T11:53:56.0984591Z     },
2026-06-21T11:53:56.0984673Z     {
2026-06-21T11:53:56.0984763Z       "id": "REQ-REL-1",
2026-06-21T11:53:56.0985148Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T11:53:56.0985240Z       "requiredStages": [
2026-06-21T11:53:56.0985326Z         "doc",
2026-06-21T11:53:56.0985411Z         "impl"
2026-06-21T11:53:56.0985497Z       ],
2026-06-21T11:53:56.0985589Z       "stages": {
2026-06-21T11:53:56.0985673Z         "doc": {
2026-06-21T11:53:56.0985759Z           "complete": true,
2026-06-21T11:53:56.0985965Z           "evidence": [
2026-06-21T11:53:56.0986054Z             {
2026-06-21T11:53:56.0986342Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T11:53:56.0986428Z               "line": 3
2026-06-21T11:53:56.0986514Z             }
2026-06-21T11:53:56.0986600Z           ]
2026-06-21T11:53:56.0986695Z         },
2026-06-21T11:53:56.0986775Z         "impl": {
2026-06-21T11:53:56.0986877Z           "complete": true,
2026-06-21T11:53:56.0986958Z           "evidence": [
2026-06-21T11:53:56.0987043Z             {
2026-06-21T11:53:56.0987173Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T11:53:56.0987253Z               "line": 11
2026-06-21T11:53:56.0987333Z             },
2026-06-21T11:53:56.0987419Z             {
2026-06-21T11:53:56.0987535Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0987621Z               "line": 265
2026-06-21T11:53:56.0987701Z             }
2026-06-21T11:53:56.0987783Z           ]
2026-06-21T11:53:56.0987868Z         },
2026-06-21T11:53:56.0987949Z         "int": {
2026-06-21T11:53:56.0988040Z           "complete": false,
2026-06-21T11:53:56.0988132Z           "evidence": []
2026-06-21T11:53:56.0988216Z         },
2026-06-21T11:53:56.0988297Z         "unit": {
2026-06-21T11:53:56.0988398Z           "complete": false,
2026-06-21T11:53:56.0988484Z           "evidence": []
2026-06-21T11:53:56.0988573Z         }
2026-06-21T11:53:56.0988655Z       }
2026-06-21T11:53:56.0988737Z     },
2026-06-21T11:53:56.0988818Z     {
2026-06-21T11:53:56.0988897Z       "id": "REQ-REL-2",
2026-06-21T11:53:56.0989482Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T11:53:56.0989577Z       "requiredStages": [
2026-06-21T11:53:56.0989652Z         "impl",
2026-06-21T11:53:56.0989735Z         "int"
2026-06-21T11:53:56.0989820Z       ],
2026-06-21T11:53:56.0989915Z       "stages": {
2026-06-21T11:53:56.0989991Z         "doc": {
2026-06-21T11:53:56.0990092Z           "complete": true,
2026-06-21T11:53:56.0990192Z           "evidence": [
2026-06-21T11:53:56.0990272Z             {
2026-06-21T11:53:56.0990383Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T11:53:56.0990478Z               "line": 6
2026-06-21T11:53:56.0990564Z             }
2026-06-21T11:53:56.0990645Z           ]
2026-06-21T11:53:56.0990731Z         },
2026-06-21T11:53:56.0990812Z         "impl": {
2026-06-21T11:53:56.0990907Z           "complete": true,
2026-06-21T11:53:56.0990994Z           "evidence": [
2026-06-21T11:53:56.0991084Z             {
2026-06-21T11:53:56.0991198Z               "path": ".github/workflows/release.yml",
2026-06-21T11:53:56.0991289Z               "line": 16
2026-06-21T11:53:56.0991370Z             },
2026-06-21T11:53:56.0991455Z             {
2026-06-21T11:53:56.0991563Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0991650Z               "line": 352
2026-06-21T11:53:56.0991730Z             },
2026-06-21T11:53:56.0991819Z             {
2026-06-21T11:53:56.0991924Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0992010Z               "line": 426
2026-06-21T11:53:56.0992096Z             },
2026-06-21T11:53:56.0992176Z             {
2026-06-21T11:53:56.0992277Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0992368Z               "line": 588
2026-06-21T11:53:56.0992453Z             },
2026-06-21T11:53:56.0992539Z             {
2026-06-21T11:53:56.0992640Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0992720Z               "line": 720
2026-06-21T11:53:56.0992806Z             }
2026-06-21T11:53:56.0992887Z           ]
2026-06-21T11:53:56.0992978Z         },
2026-06-21T11:53:56.0993063Z         "int": {
2026-06-21T11:53:56.0993149Z           "complete": true,
2026-06-21T11:53:56.0993241Z           "evidence": [
2026-06-21T11:53:56.0993321Z             {
2026-06-21T11:53:56.0993561Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T11:53:56.0993636Z               "line": 13
2026-06-21T11:53:56.0993802Z             }
2026-06-21T11:53:56.0993880Z           ]
2026-06-21T11:53:56.0993961Z         },
2026-06-21T11:53:56.0994045Z         "unit": {
2026-06-21T11:53:56.0994132Z           "complete": false,
2026-06-21T11:53:56.0994228Z           "evidence": []
2026-06-21T11:53:56.0994308Z         }
2026-06-21T11:53:56.0994393Z       }
2026-06-21T11:53:56.0994478Z     },
2026-06-21T11:53:56.0994565Z     {
2026-06-21T11:53:56.0994661Z       "id": "REQ-REL-3",
2026-06-21T11:53:56.0995089Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T11:53:56.0995185Z       "requiredStages": [
2026-06-21T11:53:56.0995270Z         "impl",
2026-06-21T11:53:56.0995356Z         "unit"
2026-06-21T11:53:56.0995442Z       ],
2026-06-21T11:53:56.0995524Z       "stages": {
2026-06-21T11:53:56.0995613Z         "doc": {
2026-06-21T11:53:56.0995703Z           "complete": false,
2026-06-21T11:53:56.0995796Z           "evidence": []
2026-06-21T11:53:56.0995877Z         },
2026-06-21T11:53:56.0995962Z         "impl": {
2026-06-21T11:53:56.0996057Z           "complete": true,
2026-06-21T11:53:56.0996139Z           "evidence": [
2026-06-21T11:53:56.0996219Z             {
2026-06-21T11:53:56.0996343Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0996439Z               "line": 237
2026-06-21T11:53:56.0996525Z             },
2026-06-21T11:53:56.0996605Z             {
2026-06-21T11:53:56.0996723Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0996809Z               "line": 289
2026-06-21T11:53:56.0996889Z             },
2026-06-21T11:53:56.0996964Z             {
2026-06-21T11:53:56.0997065Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0997156Z               "line": 329
2026-06-21T11:53:56.0997236Z             },
2026-06-21T11:53:56.0997322Z             {
2026-06-21T11:53:56.0997417Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0997513Z               "line": 353
2026-06-21T11:53:56.0997593Z             },
2026-06-21T11:53:56.0997679Z             {
2026-06-21T11:53:56.0997780Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.0997871Z               "line": 394
2026-06-21T11:53:56.0997956Z             }
2026-06-21T11:53:56.0998038Z           ]
2026-06-21T11:53:56.0998114Z         },
2026-06-21T11:53:56.0998195Z         "int": {
2026-06-21T11:53:56.0998290Z           "complete": false,
2026-06-21T11:53:56.0998367Z           "evidence": []
2026-06-21T11:53:56.0998438Z         },
2026-06-21T11:53:56.0998524Z         "unit": {
2026-06-21T11:53:56.0998609Z           "complete": true,
2026-06-21T11:53:56.0998701Z           "evidence": [
2026-06-21T11:53:56.0998781Z             {
2026-06-21T11:53:56.0998900Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0999087Z               "line": 1045
2026-06-21T11:53:56.0999162Z             },
2026-06-21T11:53:56.0999249Z             {
2026-06-21T11:53:56.0999355Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.0999453Z               "line": 1104
2026-06-21T11:53:56.0999533Z             }
2026-06-21T11:53:56.0999615Z           ]
2026-06-21T11:53:56.0999700Z         }
2026-06-21T11:53:56.0999784Z       }
2026-06-21T11:53:56.0999869Z     },
2026-06-21T11:53:56.0999950Z     {
2026-06-21T11:53:56.1000047Z       "id": "REQ-RUN-PICKER",
2026-06-21T11:53:56.1004788Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T11:53:56.1005105Z       "requiredStages": [
2026-06-21T11:53:56.1005193Z         "doc",
2026-06-21T11:53:56.1005277Z         "impl",
2026-06-21T11:53:56.1005358Z         "unit"
2026-06-21T11:53:56.1005445Z       ],
2026-06-21T11:53:56.1005536Z       "stages": {
2026-06-21T11:53:56.1005615Z         "doc": {
2026-06-21T11:53:56.1005702Z           "complete": true,
2026-06-21T11:53:56.1005798Z           "evidence": [
2026-06-21T11:53:56.1005879Z             {
2026-06-21T11:53:56.1005983Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1006069Z               "line": 349
2026-06-21T11:53:56.1006159Z             }
2026-06-21T11:53:56.1006240Z           ]
2026-06-21T11:53:56.1006321Z         },
2026-06-21T11:53:56.1006408Z         "impl": {
2026-06-21T11:53:56.1006497Z           "complete": true,
2026-06-21T11:53:56.1006598Z           "evidence": [
2026-06-21T11:53:56.1006676Z             {
2026-06-21T11:53:56.1006784Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1006884Z               "line": 958
2026-06-21T11:53:56.1006961Z             },
2026-06-21T11:53:56.1007048Z             {
2026-06-21T11:53:56.1007155Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1007250Z               "line": 968
2026-06-21T11:53:56.1007331Z             },
2026-06-21T11:53:56.1007412Z             {
2026-06-21T11:53:56.1007534Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.1007615Z               "line": 9
2026-06-21T11:53:56.1007697Z             },
2026-06-21T11:53:56.1007782Z             {
2026-06-21T11:53:56.1007896Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T11:53:56.1007973Z               "line": 67
2026-06-21T11:53:56.1008059Z             },
2026-06-21T11:53:56.1008139Z             {
2026-06-21T11:53:56.1008244Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T11:53:56.1008350Z               "line": 16
2026-06-21T11:53:56.1008431Z             },
2026-06-21T11:53:56.1008521Z             {
2026-06-21T11:53:56.1008622Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T11:53:56.1008707Z               "line": 254
2026-06-21T11:53:56.1008783Z             },
2026-06-21T11:53:56.1008869Z             {
2026-06-21T11:53:56.1009050Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1009141Z               "line": 11
2026-06-21T11:53:56.1009218Z             },
2026-06-21T11:53:56.1009295Z             {
2026-06-21T11:53:56.1009427Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1009513Z               "line": 115
2026-06-21T11:53:56.1009600Z             },
2026-06-21T11:53:56.1009684Z             {
2026-06-21T11:53:56.1009794Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1009886Z               "line": 554
2026-06-21T11:53:56.1009971Z             },
2026-06-21T11:53:56.1010145Z             {
2026-06-21T11:53:56.1010265Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1010439Z               "line": 635
2026-06-21T11:53:56.1010525Z             },
2026-06-21T11:53:56.1010607Z             {
2026-06-21T11:53:56.1010711Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1010792Z               "line": 694
2026-06-21T11:53:56.1010879Z             },
2026-06-21T11:53:56.1010960Z             {
2026-06-21T11:53:56.1011068Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1011165Z               "line": 747
2026-06-21T11:53:56.1011245Z             },
2026-06-21T11:53:56.1011331Z             {
2026-06-21T11:53:56.1011436Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1011518Z               "line": 785
2026-06-21T11:53:56.1011603Z             },
2026-06-21T11:53:56.1011688Z             {
2026-06-21T11:53:56.1011794Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.1011875Z               "line": 8
2026-06-21T11:53:56.1011965Z             }
2026-06-21T11:53:56.1012046Z           ]
2026-06-21T11:53:56.1012128Z         },
2026-06-21T11:53:56.1012213Z         "int": {
2026-06-21T11:53:56.1012303Z           "complete": false,
2026-06-21T11:53:56.1012385Z           "evidence": []
2026-06-21T11:53:56.1012472Z         },
2026-06-21T11:53:56.1012561Z         "unit": {
2026-06-21T11:53:56.1012646Z           "complete": true,
2026-06-21T11:53:56.1012732Z           "evidence": [
2026-06-21T11:53:56.1012817Z             {
2026-06-21T11:53:56.1012920Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1013010Z               "line": 7638
2026-06-21T11:53:56.1013087Z             },
2026-06-21T11:53:56.1013174Z             {
2026-06-21T11:53:56.1013278Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1013359Z               "line": 7649
2026-06-21T11:53:56.1013440Z             },
2026-06-21T11:53:56.1013517Z             {
2026-06-21T11:53:56.1013639Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1013727Z               "line": 879
2026-06-21T11:53:56.1013812Z             },
2026-06-21T11:53:56.1013898Z             {
2026-06-21T11:53:56.1014008Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1014094Z               "line": 928
2026-06-21T11:53:56.1014179Z             },
2026-06-21T11:53:56.1014260Z             {
2026-06-21T11:53:56.1014371Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1014465Z               "line": 979
2026-06-21T11:53:56.1014546Z             },
2026-06-21T11:53:56.1014617Z             {
2026-06-21T11:53:56.1014738Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1014822Z               "line": 996
2026-06-21T11:53:56.1014904Z             },
2026-06-21T11:53:56.1014986Z             {
2026-06-21T11:53:56.1015090Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1015180Z               "line": 1005
2026-06-21T11:53:56.1015267Z             },
2026-06-21T11:53:56.1015349Z             {
2026-06-21T11:53:56.1015461Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1015546Z               "line": 1016
2026-06-21T11:53:56.1015627Z             },
2026-06-21T11:53:56.1015714Z             {
2026-06-21T11:53:56.1015833Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1015923Z               "line": 1038
2026-06-21T11:53:56.1016000Z             },
2026-06-21T11:53:56.1016086Z             {
2026-06-21T11:53:56.1016189Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1016282Z               "line": 1057
2026-06-21T11:53:56.1016367Z             },
2026-06-21T11:53:56.1016457Z             {
2026-06-21T11:53:56.1016562Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1016653Z               "line": 1107
2026-06-21T11:53:56.1016733Z             },
2026-06-21T11:53:56.1016815Z             {
2026-06-21T11:53:56.1017020Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1017106Z               "line": 1136
2026-06-21T11:53:56.1017259Z             },
2026-06-21T11:53:56.1017345Z             {
2026-06-21T11:53:56.1017454Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1017540Z               "line": 1149
2026-06-21T11:53:56.1017626Z             },
2026-06-21T11:53:56.1017706Z             {
2026-06-21T11:53:56.1017820Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1017910Z               "line": 1215
2026-06-21T11:53:56.1017995Z             },
2026-06-21T11:53:56.1018089Z             {
2026-06-21T11:53:56.1018190Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1018280Z               "line": 1256
2026-06-21T11:53:56.1018362Z             },
2026-06-21T11:53:56.1018442Z             {
2026-06-21T11:53:56.1018547Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1018633Z               "line": 1272
2026-06-21T11:53:56.1018718Z             },
2026-06-21T11:53:56.1018799Z             {
2026-06-21T11:53:56.1018924Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.1019090Z               "line": 491
2026-06-21T11:53:56.1019172Z             },
2026-06-21T11:53:56.1019258Z             {
2026-06-21T11:53:56.1019357Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.1019448Z               "line": 506
2026-06-21T11:53:56.1019525Z             },
2026-06-21T11:53:56.1019610Z             {
2026-06-21T11:53:56.1019720Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.1019802Z               "line": 524
2026-06-21T11:53:56.1019878Z             },
2026-06-21T11:53:56.1019963Z             {
2026-06-21T11:53:56.1020064Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.1020151Z               "line": 546
2026-06-21T11:53:56.1020230Z             },
2026-06-21T11:53:56.1020312Z             {
2026-06-21T11:53:56.1020417Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.1020508Z               "line": 556
2026-06-21T11:53:56.1020597Z             },
2026-06-21T11:53:56.1020682Z             {
2026-06-21T11:53:56.1020787Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T11:53:56.1020867Z               "line": 582
2026-06-21T11:53:56.1020956Z             }
2026-06-21T11:53:56.1021032Z           ]
2026-06-21T11:53:56.1021114Z         }
2026-06-21T11:53:56.1021196Z       }
2026-06-21T11:53:56.1021290Z     },
2026-06-21T11:53:56.1021376Z     {
2026-06-21T11:53:56.1021481Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T11:53:56.1026182Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T11:53:56.1026488Z       "requiredStages": [
2026-06-21T11:53:56.1026575Z         "doc",
2026-06-21T11:53:56.1026660Z         "impl",
2026-06-21T11:53:56.1026740Z         "unit"
2026-06-21T11:53:56.1026817Z       ],
2026-06-21T11:53:56.1026904Z       "stages": {
2026-06-21T11:53:56.1026985Z         "doc": {
2026-06-21T11:53:56.1027083Z           "complete": true,
2026-06-21T11:53:56.1027171Z           "evidence": [
2026-06-21T11:53:56.1027256Z             {
2026-06-21T11:53:56.1027365Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1027451Z               "line": 390
2026-06-21T11:53:56.1027538Z             }
2026-06-21T11:53:56.1027627Z           ]
2026-06-21T11:53:56.1027708Z         },
2026-06-21T11:53:56.1027801Z         "impl": {
2026-06-21T11:53:56.1027891Z           "complete": true,
2026-06-21T11:53:56.1027985Z           "evidence": [
2026-06-21T11:53:56.1028067Z             {
2026-06-21T11:53:56.1028191Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1028280Z               "line": 39
2026-06-21T11:53:56.1028366Z             },
2026-06-21T11:53:56.1028442Z             {
2026-06-21T11:53:56.1028574Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1028668Z               "line": 79
2026-06-21T11:53:56.1028750Z             },
2026-06-21T11:53:56.1028832Z             {
2026-06-21T11:53:56.1029021Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1029112Z               "line": 162
2026-06-21T11:53:56.1029188Z             }
2026-06-21T11:53:56.1029274Z           ]
2026-06-21T11:53:56.1029355Z         },
2026-06-21T11:53:56.1029437Z         "int": {
2026-06-21T11:53:56.1029537Z           "complete": false,
2026-06-21T11:53:56.1029617Z           "evidence": []
2026-06-21T11:53:56.1029704Z         },
2026-06-21T11:53:56.1029785Z         "unit": {
2026-06-21T11:53:56.1029889Z           "complete": true,
2026-06-21T11:53:56.1029990Z           "evidence": [
2026-06-21T11:53:56.1030066Z             {
2026-06-21T11:53:56.1030195Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1030275Z               "line": 206
2026-06-21T11:53:56.1030358Z             },
2026-06-21T11:53:56.1030448Z             {
2026-06-21T11:53:56.1030557Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1030648Z               "line": 222
2026-06-21T11:53:56.1030729Z             },
2026-06-21T11:53:56.1030814Z             {
2026-06-21T11:53:56.1030919Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1031011Z               "line": 238
2026-06-21T11:53:56.1031101Z             },
2026-06-21T11:53:56.1031185Z             {
2026-06-21T11:53:56.1031295Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1031381Z               "line": 251
2026-06-21T11:53:56.1031474Z             },
2026-06-21T11:53:56.1031554Z             {
2026-06-21T11:53:56.1031669Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T11:53:56.1031761Z               "line": 258
2026-06-21T11:53:56.1031835Z             }
2026-06-21T11:53:56.1031921Z           ]
2026-06-21T11:53:56.1032004Z         }
2026-06-21T11:53:56.1032085Z       }
2026-06-21T11:53:56.1032174Z     },
2026-06-21T11:53:56.1032261Z     {
2026-06-21T11:53:56.1032356Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T11:53:56.1032532Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T11:53:56.1032633Z       "requiredStages": [
2026-06-21T11:53:56.1032713Z         "impl",
2026-06-21T11:53:56.1032799Z         "unit"
2026-06-21T11:53:56.1032880Z       ],
2026-06-21T11:53:56.1032967Z       "stages": {
2026-06-21T11:53:56.1033061Z         "doc": {
2026-06-21T11:53:56.1033152Z           "complete": false,
2026-06-21T11:53:56.1033343Z           "evidence": []
2026-06-21T11:53:56.1033414Z         },
2026-06-21T11:53:56.1033578Z         "impl": {
2026-06-21T11:53:56.1033658Z           "complete": true,
2026-06-21T11:53:56.1033747Z           "evidence": [
2026-06-21T11:53:56.1033832Z             {
2026-06-21T11:53:56.1033947Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1034035Z               "line": 18
2026-06-21T11:53:56.1034121Z             },
2026-06-21T11:53:56.1034207Z             {
2026-06-21T11:53:56.1034313Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1034412Z               "line": 35
2026-06-21T11:53:56.1034498Z             },
2026-06-21T11:53:56.1034584Z             {
2026-06-21T11:53:56.1034684Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1034765Z               "line": 72
2026-06-21T11:53:56.1034852Z             }
2026-06-21T11:53:56.1034937Z           ]
2026-06-21T11:53:56.1035018Z         },
2026-06-21T11:53:56.1035103Z         "int": {
2026-06-21T11:53:56.1035195Z           "complete": false,
2026-06-21T11:53:56.1035299Z           "evidence": []
2026-06-21T11:53:56.1035385Z         },
2026-06-21T11:53:56.1035471Z         "unit": {
2026-06-21T11:53:56.1035566Z           "complete": true,
2026-06-21T11:53:56.1035657Z           "evidence": [
2026-06-21T11:53:56.1035738Z             {
2026-06-21T11:53:56.1035844Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1035928Z               "line": 239
2026-06-21T11:53:56.1036009Z             },
2026-06-21T11:53:56.1036087Z             {
2026-06-21T11:53:56.1036196Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1036300Z               "line": 256
2026-06-21T11:53:56.1036392Z             },
2026-06-21T11:53:56.1036474Z             {
2026-06-21T11:53:56.1036586Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1036675Z               "line": 265
2026-06-21T11:53:56.1036767Z             }
2026-06-21T11:53:56.1036854Z           ]
2026-06-21T11:53:56.1036934Z         }
2026-06-21T11:53:56.1037024Z       }
2026-06-21T11:53:56.1037106Z     },
2026-06-21T11:53:56.1037192Z     {
2026-06-21T11:53:56.1037291Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T11:53:56.1037449Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T11:53:56.1037540Z       "requiredStages": [
2026-06-21T11:53:56.1037630Z         "impl",
2026-06-21T11:53:56.1037716Z         "unit"
2026-06-21T11:53:56.1037802Z       ],
2026-06-21T11:53:56.1037888Z       "stages": {
2026-06-21T11:53:56.1037973Z         "doc": {
2026-06-21T11:53:56.1038070Z           "complete": false,
2026-06-21T11:53:56.1038159Z           "evidence": []
2026-06-21T11:53:56.1038240Z         },
2026-06-21T11:53:56.1038327Z         "impl": {
2026-06-21T11:53:56.1038408Z           "complete": true,
2026-06-21T11:53:56.1038497Z           "evidence": [
2026-06-21T11:53:56.1038569Z             {
2026-06-21T11:53:56.1038700Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1038784Z               "line": 598
2026-06-21T11:53:56.1038873Z             }
2026-06-21T11:53:56.1039054Z           ]
2026-06-21T11:53:56.1039134Z         },
2026-06-21T11:53:56.1039209Z         "int": {
2026-06-21T11:53:56.1039295Z           "complete": false,
2026-06-21T11:53:56.1039382Z           "evidence": []
2026-06-21T11:53:56.1039472Z         },
2026-06-21T11:53:56.1039562Z         "unit": {
2026-06-21T11:53:56.1039658Z           "complete": true,
2026-06-21T11:53:56.1039744Z           "evidence": [
2026-06-21T11:53:56.1039834Z             {
2026-06-21T11:53:56.1039944Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1040045Z               "line": 967
2026-06-21T11:53:56.1040125Z             }
2026-06-21T11:53:56.1040201Z           ]
2026-06-21T11:53:56.1040279Z         }
2026-06-21T11:53:56.1040359Z       }
2026-06-21T11:53:56.1040445Z     },
2026-06-21T11:53:56.1040525Z     {
2026-06-21T11:53:56.1040726Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T11:53:56.1040903Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T11:53:56.1041108Z       "requiredStages": [
2026-06-21T11:53:56.1041198Z         "impl",
2026-06-21T11:53:56.1041280Z         "unit",
2026-06-21T11:53:56.1041369Z         "int"
2026-06-21T11:53:56.1041446Z       ],
2026-06-21T11:53:56.1041533Z       "stages": {
2026-06-21T11:53:56.1041609Z         "doc": {
2026-06-21T11:53:56.1041698Z           "complete": false,
2026-06-21T11:53:56.1041788Z           "evidence": []
2026-06-21T11:53:56.1041874Z         },
2026-06-21T11:53:56.1041959Z         "impl": {
2026-06-21T11:53:56.1042039Z           "complete": true,
2026-06-21T11:53:56.1042134Z           "evidence": [
2026-06-21T11:53:56.1042210Z             {
2026-06-21T11:53:56.1042330Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T11:53:56.1042424Z               "line": 24
2026-06-21T11:53:56.1042501Z             },
2026-06-21T11:53:56.1042593Z             {
2026-06-21T11:53:56.1042711Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T11:53:56.1042806Z               "line": 22
2026-06-21T11:53:56.1042898Z             }
2026-06-21T11:53:56.1042993Z           ]
2026-06-21T11:53:56.1043068Z         },
2026-06-21T11:53:56.1043155Z         "int": {
2026-06-21T11:53:56.1043246Z           "complete": true,
2026-06-21T11:53:56.1043327Z           "evidence": [
2026-06-21T11:53:56.1043407Z             {
2026-06-21T11:53:56.1043532Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:56.1043621Z               "line": 260
2026-06-21T11:53:56.1043697Z             }
2026-06-21T11:53:56.1043780Z           ]
2026-06-21T11:53:56.1043871Z         },
2026-06-21T11:53:56.1043959Z         "unit": {
2026-06-21T11:53:56.1044051Z           "complete": true,
2026-06-21T11:53:56.1044128Z           "evidence": [
2026-06-21T11:53:56.1044218Z             {
2026-06-21T11:53:56.1044336Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T11:53:56.1044417Z               "line": 171
2026-06-21T11:53:56.1044493Z             },
2026-06-21T11:53:56.1044577Z             {
2026-06-21T11:53:56.1044695Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T11:53:56.1044782Z               "line": 200
2026-06-21T11:53:56.1044864Z             },
2026-06-21T11:53:56.1044953Z             {
2026-06-21T11:53:56.1045058Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T11:53:56.1045154Z               "line": 220
2026-06-21T11:53:56.1045235Z             },
2026-06-21T11:53:56.1045320Z             {
2026-06-21T11:53:56.1045431Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T11:53:56.1045526Z               "line": 199
2026-06-21T11:53:56.1045616Z             },
2026-06-21T11:53:56.1045693Z             {
2026-06-21T11:53:56.1045802Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T11:53:56.1045883Z               "line": 219
2026-06-21T11:53:56.1045974Z             },
2026-06-21T11:53:56.1046061Z             {
2026-06-21T11:53:56.1046179Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T11:53:56.1046279Z               "line": 244
2026-06-21T11:53:56.1046361Z             },
2026-06-21T11:53:56.1046451Z             {
2026-06-21T11:53:56.1046551Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T11:53:56.1046647Z               "line": 276
2026-06-21T11:53:56.1046733Z             },
2026-06-21T11:53:56.1046817Z             {
2026-06-21T11:53:56.1046932Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T11:53:56.1047019Z               "line": 297
2026-06-21T11:53:56.1047099Z             },
2026-06-21T11:53:56.1047179Z             {
2026-06-21T11:53:56.1047294Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T11:53:56.1047380Z               "line": 324
2026-06-21T11:53:56.1047470Z             }
2026-06-21T11:53:56.1047560Z           ]
2026-06-21T11:53:56.1047637Z         }
2026-06-21T11:53:56.1047723Z       }
2026-06-21T11:53:56.1047875Z     },
2026-06-21T11:53:56.1047967Z     {
2026-06-21T11:53:56.1048066Z       "id": "REQ-SEAM-INJECT",
2026-06-21T11:53:56.1048291Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T11:53:56.1048395Z       "requiredStages": [
2026-06-21T11:53:56.1048476Z         "impl",
2026-06-21T11:53:56.1048562Z         "unit"
2026-06-21T11:53:56.1048635Z       ],
2026-06-21T11:53:56.1048719Z       "stages": {
2026-06-21T11:53:56.1048810Z         "doc": {
2026-06-21T11:53:56.1048892Z           "complete": false,
2026-06-21T11:53:56.1049067Z           "evidence": []
2026-06-21T11:53:56.1049148Z         },
2026-06-21T11:53:56.1049230Z         "impl": {
2026-06-21T11:53:56.1049320Z           "complete": true,
2026-06-21T11:53:56.1049424Z           "evidence": [
2026-06-21T11:53:56.1049500Z             {
2026-06-21T11:53:56.1049610Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1049699Z               "line": 19
2026-06-21T11:53:56.1049779Z             },
2026-06-21T11:53:56.1049865Z             {
2026-06-21T11:53:56.1049976Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1052585Z               "line": 111
2026-06-21T11:53:56.1052698Z             }
2026-06-21T11:53:56.1052785Z           ]
2026-06-21T11:53:56.1052871Z         },
2026-06-21T11:53:56.1052956Z         "int": {
2026-06-21T11:53:56.1053051Z           "complete": false,
2026-06-21T11:53:56.1053138Z           "evidence": []
2026-06-21T11:53:56.1053224Z         },
2026-06-21T11:53:56.1053304Z         "unit": {
2026-06-21T11:53:56.1053401Z           "complete": true,
2026-06-21T11:53:56.1053486Z           "evidence": [
2026-06-21T11:53:56.1053572Z             {
2026-06-21T11:53:56.1053695Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1053777Z               "line": 345
2026-06-21T11:53:56.1053862Z             },
2026-06-21T11:53:56.1053948Z             {
2026-06-21T11:53:56.1054068Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1054177Z               "line": 365
2026-06-21T11:53:56.1054258Z             }
2026-06-21T11:53:56.1054345Z           ]
2026-06-21T11:53:56.1054416Z         }
2026-06-21T11:53:56.1054505Z       }
2026-06-21T11:53:56.1054587Z     },
2026-06-21T11:53:56.1054670Z     {
2026-06-21T11:53:56.1054779Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T11:53:56.1054910Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T11:53:56.1055006Z       "requiredStages": [
2026-06-21T11:53:56.1055086Z         "impl",
2026-06-21T11:53:56.1055170Z         "unit"
2026-06-21T11:53:56.1055241Z       ],
2026-06-21T11:53:56.1055337Z       "stages": {
2026-06-21T11:53:56.1055424Z         "doc": {
2026-06-21T11:53:56.1055513Z           "complete": false,
2026-06-21T11:53:56.1055609Z           "evidence": []
2026-06-21T11:53:56.1055691Z         },
2026-06-21T11:53:56.1055777Z         "impl": {
2026-06-21T11:53:56.1055871Z           "complete": true,
2026-06-21T11:53:56.1055962Z           "evidence": [
2026-06-21T11:53:56.1056062Z             {
2026-06-21T11:53:56.1056180Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1056277Z               "line": 18
2026-06-21T11:53:56.1056363Z             },
2026-06-21T11:53:56.1056448Z             {
2026-06-21T11:53:56.1056557Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1056640Z               "line": 431
2026-06-21T11:53:56.1056724Z             }
2026-06-21T11:53:56.1056810Z           ]
2026-06-21T11:53:56.1056897Z         },
2026-06-21T11:53:56.1056974Z         "int": {
2026-06-21T11:53:56.1057072Z           "complete": false,
2026-06-21T11:53:56.1057159Z           "evidence": []
2026-06-21T11:53:56.1057240Z         },
2026-06-21T11:53:56.1057331Z         "unit": {
2026-06-21T11:53:56.1057411Z           "complete": true,
2026-06-21T11:53:56.1057497Z           "evidence": [
2026-06-21T11:53:56.1057579Z             {
2026-06-21T11:53:56.1057687Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1057911Z               "line": 881
2026-06-21T11:53:56.1057993Z             },
2026-06-21T11:53:56.1058077Z             {
2026-06-21T11:53:56.1058274Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1058364Z               "line": 891
2026-06-21T11:53:56.1058440Z             }
2026-06-21T11:53:56.1058522Z           ]
2026-06-21T11:53:56.1058602Z         }
2026-06-21T11:53:56.1058683Z       }
2026-06-21T11:53:56.1058764Z     },
2026-06-21T11:53:56.1058846Z     {
2026-06-21T11:53:56.1059026Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T11:53:56.1059166Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T11:53:56.1059260Z       "requiredStages": [
2026-06-21T11:53:56.1059341Z         "impl",
2026-06-21T11:53:56.1059432Z         "unit",
2026-06-21T11:53:56.1059524Z         "int"
2026-06-21T11:53:56.1059603Z       ],
2026-06-21T11:53:56.1059684Z       "stages": {
2026-06-21T11:53:56.1059766Z         "doc": {
2026-06-21T11:53:56.1059867Z           "complete": false,
2026-06-21T11:53:56.1059956Z           "evidence": []
2026-06-21T11:53:56.1060031Z         },
2026-06-21T11:53:56.1060117Z         "impl": {
2026-06-21T11:53:56.1060221Z           "complete": true,
2026-06-21T11:53:56.1060316Z           "evidence": [
2026-06-21T11:53:56.1060401Z             {
2026-06-21T11:53:56.1060526Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T11:53:56.1060606Z               "line": 19
2026-06-21T11:53:56.1060696Z             },
2026-06-21T11:53:56.1060774Z             {
2026-06-21T11:53:56.1060879Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T11:53:56.1060969Z               "line": 12
2026-06-21T11:53:56.1061050Z             },
2026-06-21T11:53:56.1061136Z             {
2026-06-21T11:53:56.1061245Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1061335Z               "line": 301
2026-06-21T11:53:56.1061423Z             }
2026-06-21T11:53:56.1061498Z           ]
2026-06-21T11:53:56.1061574Z         },
2026-06-21T11:53:56.1061660Z         "int": {
2026-06-21T11:53:56.1061752Z           "complete": true,
2026-06-21T11:53:56.1061832Z           "evidence": [
2026-06-21T11:53:56.1061913Z             {
2026-06-21T11:53:56.1062038Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:56.1062118Z               "line": 259
2026-06-21T11:53:56.1062203Z             }
2026-06-21T11:53:56.1062280Z           ]
2026-06-21T11:53:56.1062358Z         },
2026-06-21T11:53:56.1062433Z         "unit": {
2026-06-21T11:53:56.1062523Z           "complete": true,
2026-06-21T11:53:56.1062604Z           "evidence": [
2026-06-21T11:53:56.1062687Z             {
2026-06-21T11:53:56.1062804Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T11:53:56.1062884Z               "line": 195
2026-06-21T11:53:56.1062975Z             },
2026-06-21T11:53:56.1063061Z             {
2026-06-21T11:53:56.1063178Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T11:53:56.1063258Z               "line": 202
2026-06-21T11:53:56.1063350Z             },
2026-06-21T11:53:56.1063431Z             {
2026-06-21T11:53:56.1063540Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T11:53:56.1063626Z               "line": 225
2026-06-21T11:53:56.1063713Z             },
2026-06-21T11:53:56.1063798Z             {
2026-06-21T11:53:56.1063912Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T11:53:56.1063994Z               "line": 106
2026-06-21T11:53:56.1064075Z             },
2026-06-21T11:53:56.1064160Z             {
2026-06-21T11:53:56.1064265Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T11:53:56.1064361Z               "line": 137
2026-06-21T11:53:56.1064447Z             },
2026-06-21T11:53:56.1064527Z             {
2026-06-21T11:53:56.1064638Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T11:53:56.1064728Z               "line": 161
2026-06-21T11:53:56.1064809Z             }
2026-06-21T11:53:56.1064885Z           ]
2026-06-21T11:53:56.1064976Z         }
2026-06-21T11:53:56.1065161Z       }
2026-06-21T11:53:56.1065244Z     },
2026-06-21T11:53:56.1065310Z     {
2026-06-21T11:53:56.1065413Z       "id": "REQ-SEAM-RESUME",
2026-06-21T11:53:56.1065684Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T11:53:56.1065768Z       "requiredStages": [
2026-06-21T11:53:56.1065854Z         "impl",
2026-06-21T11:53:56.1065936Z         "unit"
2026-06-21T11:53:56.1066017Z       ],
2026-06-21T11:53:56.1066102Z       "stages": {
2026-06-21T11:53:56.1066188Z         "doc": {
2026-06-21T11:53:56.1066270Z           "complete": false,
2026-06-21T11:53:56.1066356Z           "evidence": []
2026-06-21T11:53:56.1066435Z         },
2026-06-21T11:53:56.1066527Z         "impl": {
2026-06-21T11:53:56.1066617Z           "complete": true,
2026-06-21T11:53:56.1066708Z           "evidence": [
2026-06-21T11:53:56.1066793Z             {
2026-06-21T11:53:56.1066899Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:56.1066989Z               "line": 19
2026-06-21T11:53:56.1067079Z             }
2026-06-21T11:53:56.1067166Z           ]
2026-06-21T11:53:56.1067252Z         },
2026-06-21T11:53:56.1067342Z         "int": {
2026-06-21T11:53:56.1067437Z           "complete": false,
2026-06-21T11:53:56.1067519Z           "evidence": []
2026-06-21T11:53:56.1067609Z         },
2026-06-21T11:53:56.1067680Z         "unit": {
2026-06-21T11:53:56.1067772Z           "complete": true,
2026-06-21T11:53:56.1067854Z           "evidence": [
2026-06-21T11:53:56.1067937Z             {
2026-06-21T11:53:56.1068058Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:56.1068139Z               "line": 201
2026-06-21T11:53:56.1068225Z             },
2026-06-21T11:53:56.1068309Z             {
2026-06-21T11:53:56.1068419Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:56.1068505Z               "line": 223
2026-06-21T11:53:56.1068591Z             },
2026-06-21T11:53:56.1068676Z             {
2026-06-21T11:53:56.1068786Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T11:53:56.1068882Z               "line": 244
2026-06-21T11:53:56.1069053Z             }
2026-06-21T11:53:56.1069130Z           ]
2026-06-21T11:53:56.1069216Z         }
2026-06-21T11:53:56.1069300Z       }
2026-06-21T11:53:56.1069396Z     },
2026-06-21T11:53:56.1069478Z     {
2026-06-21T11:53:56.1069568Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T11:53:56.1069667Z       "title": "spawn-session seam",
2026-06-21T11:53:56.1069755Z       "requiredStages": [
2026-06-21T11:53:56.1069839Z         "impl",
2026-06-21T11:53:56.1069920Z         "unit"
2026-06-21T11:53:56.1070012Z       ],
2026-06-21T11:53:56.1070094Z       "stages": {
2026-06-21T11:53:56.1070173Z         "doc": {
2026-06-21T11:53:56.1070268Z           "complete": false,
2026-06-21T11:53:56.1070351Z           "evidence": []
2026-06-21T11:53:56.1070441Z         },
2026-06-21T11:53:56.1070521Z         "impl": {
2026-06-21T11:53:56.1070615Z           "complete": true,
2026-06-21T11:53:56.1070692Z           "evidence": [
2026-06-21T11:53:56.1070781Z             {
2026-06-21T11:53:56.1070904Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.1070995Z               "line": 20
2026-06-21T11:53:56.1071081Z             }
2026-06-21T11:53:56.1071162Z           ]
2026-06-21T11:53:56.1071238Z         },
2026-06-21T11:53:56.1071324Z         "int": {
2026-06-21T11:53:56.1071420Z           "complete": false,
2026-06-21T11:53:56.1071500Z           "evidence": []
2026-06-21T11:53:56.1071585Z         },
2026-06-21T11:53:56.1071664Z         "unit": {
2026-06-21T11:53:56.1071749Z           "complete": true,
2026-06-21T11:53:56.1071829Z           "evidence": [
2026-06-21T11:53:56.1071905Z             {
2026-06-21T11:53:56.1072020Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.1072115Z               "line": 608
2026-06-21T11:53:56.1072201Z             },
2026-06-21T11:53:56.1072278Z             {
2026-06-21T11:53:56.1072397Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.1072588Z               "line": 615
2026-06-21T11:53:56.1072674Z             },
2026-06-21T11:53:56.1072849Z             {
2026-06-21T11:53:56.1072965Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.1073049Z               "line": 721
2026-06-21T11:53:56.1073126Z             },
2026-06-21T11:53:56.1073204Z             {
2026-06-21T11:53:56.1073327Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.1073412Z               "line": 727
2026-06-21T11:53:56.1073497Z             },
2026-06-21T11:53:56.1073578Z             {
2026-06-21T11:53:56.1073691Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.1073780Z               "line": 752
2026-06-21T11:53:56.1073862Z             },
2026-06-21T11:53:56.1073949Z             {
2026-06-21T11:53:56.1074053Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T11:53:56.1074138Z               "line": 789
2026-06-21T11:53:56.1074225Z             }
2026-06-21T11:53:56.1074311Z           ]
2026-06-21T11:53:56.1074396Z         }
2026-06-21T11:53:56.1074477Z       }
2026-06-21T11:53:56.1074563Z     },
2026-06-21T11:53:56.1074644Z     {
2026-06-21T11:53:56.1074748Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T11:53:56.1074912Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T11:53:56.1075002Z       "requiredStages": [
2026-06-21T11:53:56.1075077Z         "impl",
2026-06-21T11:53:56.1075150Z         "unit"
2026-06-21T11:53:56.1075236Z       ],
2026-06-21T11:53:56.1075325Z       "stages": {
2026-06-21T11:53:56.1075407Z         "doc": {
2026-06-21T11:53:56.1075503Z           "complete": false,
2026-06-21T11:53:56.1075584Z           "evidence": []
2026-06-21T11:53:56.1075674Z         },
2026-06-21T11:53:56.1075756Z         "impl": {
2026-06-21T11:53:56.1075842Z           "complete": true,
2026-06-21T11:53:56.1075931Z           "evidence": [
2026-06-21T11:53:56.1076016Z             {
2026-06-21T11:53:56.1076140Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1076234Z               "line": 28
2026-06-21T11:53:56.1076319Z             },
2026-06-21T11:53:56.1076404Z             {
2026-06-21T11:53:56.1076529Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1076620Z               "line": 88
2026-06-21T11:53:56.1076705Z             }
2026-06-21T11:53:56.1076792Z           ]
2026-06-21T11:53:56.1076863Z         },
2026-06-21T11:53:56.1076944Z         "int": {
2026-06-21T11:53:56.1077029Z           "complete": false,
2026-06-21T11:53:56.1077116Z           "evidence": []
2026-06-21T11:53:56.1077201Z         },
2026-06-21T11:53:56.1077287Z         "unit": {
2026-06-21T11:53:56.1077368Z           "complete": true,
2026-06-21T11:53:56.1077450Z           "evidence": [
2026-06-21T11:53:56.1077534Z             {
2026-06-21T11:53:56.1077659Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1077741Z               "line": 326
2026-06-21T11:53:56.1077831Z             },
2026-06-21T11:53:56.1077917Z             {
2026-06-21T11:53:56.1078042Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1078127Z               "line": 337
2026-06-21T11:53:56.1078212Z             }
2026-06-21T11:53:56.1078293Z           ]
2026-06-21T11:53:56.1078375Z         }
2026-06-21T11:53:56.1078456Z       }
2026-06-21T11:53:56.1078541Z     },
2026-06-21T11:53:56.1078623Z     {
2026-06-21T11:53:56.1078704Z       "id": "REQ-SEC-1",
2026-06-21T11:53:56.1079188Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T11:53:56.1079283Z       "requiredStages": [
2026-06-21T11:53:56.1079361Z         "impl",
2026-06-21T11:53:56.1079447Z         "unit"
2026-06-21T11:53:56.1079531Z       ],
2026-06-21T11:53:56.1079613Z       "stages": {
2026-06-21T11:53:56.1079700Z         "doc": {
2026-06-21T11:53:56.1079790Z           "complete": false,
2026-06-21T11:53:56.1079971Z           "evidence": []
2026-06-21T11:53:56.1080061Z         },
2026-06-21T11:53:56.1080133Z         "impl": {
2026-06-21T11:53:56.1080305Z           "complete": true,
2026-06-21T11:53:56.1080399Z           "evidence": [
2026-06-21T11:53:56.1080480Z             {
2026-06-21T11:53:56.1080601Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T11:53:56.1080682Z               "line": 86
2026-06-21T11:53:56.1080761Z             },
2026-06-21T11:53:56.1080843Z             {
2026-06-21T11:53:56.1080954Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T11:53:56.1081034Z               "line": 116
2026-06-21T11:53:56.1081114Z             },
2026-06-21T11:53:56.1081194Z             {
2026-06-21T11:53:56.1081305Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T11:53:56.1081388Z               "line": 130
2026-06-21T11:53:56.1081478Z             },
2026-06-21T11:53:56.1081564Z             {
2026-06-21T11:53:56.1081680Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1081764Z               "line": 109
2026-06-21T11:53:56.1081851Z             },
2026-06-21T11:53:56.1081937Z             {
2026-06-21T11:53:56.1082046Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1082131Z               "line": 130
2026-06-21T11:53:56.1082219Z             },
2026-06-21T11:53:56.1082304Z             {
2026-06-21T11:53:56.1082408Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1082495Z               "line": 143
2026-06-21T11:53:56.1082576Z             },
2026-06-21T11:53:56.1082652Z             {
2026-06-21T11:53:56.1082756Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1082843Z               "line": 209
2026-06-21T11:53:56.1082919Z             },
2026-06-21T11:53:56.1083000Z             {
2026-06-21T11:53:56.1083148Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1083229Z               "line": 235
2026-06-21T11:53:56.1083319Z             },
2026-06-21T11:53:56.1083405Z             {
2026-06-21T11:53:56.1083512Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1083614Z               "line": 5295
2026-06-21T11:53:56.1083696Z             }
2026-06-21T11:53:56.1083773Z           ]
2026-06-21T11:53:56.1083859Z         },
2026-06-21T11:53:56.1083948Z         "int": {
2026-06-21T11:53:56.1084042Z           "complete": false,
2026-06-21T11:53:56.1084129Z           "evidence": []
2026-06-21T11:53:56.1084218Z         },
2026-06-21T11:53:56.1084303Z         "unit": {
2026-06-21T11:53:56.1084383Z           "complete": true,
2026-06-21T11:53:56.1084475Z           "evidence": [
2026-06-21T11:53:56.1084561Z             {
2026-06-21T11:53:56.1084674Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T11:53:56.1084761Z               "line": 142
2026-06-21T11:53:56.1084852Z             },
2026-06-21T11:53:56.1084937Z             {
2026-06-21T11:53:56.1085056Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T11:53:56.1085152Z               "line": 194
2026-06-21T11:53:56.1085233Z             },
2026-06-21T11:53:56.1085318Z             {
2026-06-21T11:53:56.1085434Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T11:53:56.1085524Z               "line": 235
2026-06-21T11:53:56.1085595Z             },
2026-06-21T11:53:56.1085681Z             {
2026-06-21T11:53:56.1085801Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T11:53:56.1085890Z               "line": 140
2026-06-21T11:53:56.1085976Z             },
2026-06-21T11:53:56.1086059Z             {
2026-06-21T11:53:56.1086172Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1086253Z               "line": 247
2026-06-21T11:53:56.1086335Z             },
2026-06-21T11:53:56.1086421Z             {
2026-06-21T11:53:56.1086534Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1086628Z               "line": 277
2026-06-21T11:53:56.1086710Z             },
2026-06-21T11:53:56.1086874Z             {
2026-06-21T11:53:56.1086984Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1087147Z               "line": 310
2026-06-21T11:53:56.1087231Z             },
2026-06-21T11:53:56.1087313Z             {
2026-06-21T11:53:56.1087437Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1087523Z               "line": 329
2026-06-21T11:53:56.1087604Z             },
2026-06-21T11:53:56.1087686Z             {
2026-06-21T11:53:56.1087800Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1087884Z               "line": 362
2026-06-21T11:53:56.1087972Z             },
2026-06-21T11:53:56.1088057Z             {
2026-06-21T11:53:56.1088157Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T11:53:56.1088243Z               "line": 386
2026-06-21T11:53:56.1088320Z             },
2026-06-21T11:53:56.1088405Z             {
2026-06-21T11:53:56.1088509Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1088602Z               "line": 8296
2026-06-21T11:53:56.1088691Z             }
2026-06-21T11:53:56.1088777Z           ]
2026-06-21T11:53:56.1088863Z         }
2026-06-21T11:53:56.1089020Z       }
2026-06-21T11:53:56.1089101Z     },
2026-06-21T11:53:56.1089178Z     {
2026-06-21T11:53:56.1089288Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T11:53:56.1093035Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T11:53:56.1093146Z       "requiredStages": [
2026-06-21T11:53:56.1093236Z         "impl",
2026-06-21T11:53:56.1093321Z         "unit",
2026-06-21T11:53:56.1093403Z         "int"
2026-06-21T11:53:56.1093488Z       ],
2026-06-21T11:53:56.1093570Z       "stages": {
2026-06-21T11:53:56.1093650Z         "doc": {
2026-06-21T11:53:56.1093742Z           "complete": false,
2026-06-21T11:53:56.1093841Z           "evidence": []
2026-06-21T11:53:56.1093927Z         },
2026-06-21T11:53:56.1094009Z         "impl": {
2026-06-21T11:53:56.1094114Z           "complete": true,
2026-06-21T11:53:56.1094198Z           "evidence": [
2026-06-21T11:53:56.1094285Z             {
2026-06-21T11:53:56.1094405Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.1094498Z               "line": 1106
2026-06-21T11:53:56.1094584Z             },
2026-06-21T11:53:56.1094660Z             {
2026-06-21T11:53:56.1094774Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.1094868Z               "line": 1942
2026-06-21T11:53:56.1094943Z             },
2026-06-21T11:53:56.1095030Z             {
2026-06-21T11:53:56.1095130Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1095230Z               "line": 2850
2026-06-21T11:53:56.1095311Z             }
2026-06-21T11:53:56.1095402Z           ]
2026-06-21T11:53:56.1095483Z         },
2026-06-21T11:53:56.1095568Z         "int": {
2026-06-21T11:53:56.1095770Z           "complete": true,
2026-06-21T11:53:56.1095859Z           "evidence": [
2026-06-21T11:53:56.1096013Z             {
2026-06-21T11:53:56.1096136Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:56.1096231Z               "line": 189
2026-06-21T11:53:56.1096318Z             },
2026-06-21T11:53:56.1096398Z             {
2026-06-21T11:53:56.1096522Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T11:53:56.1096614Z               "line": 524
2026-06-21T11:53:56.1096699Z             }
2026-06-21T11:53:56.1096784Z           ]
2026-06-21T11:53:56.1096866Z         },
2026-06-21T11:53:56.1096953Z         "unit": {
2026-06-21T11:53:56.1097042Z           "complete": true,
2026-06-21T11:53:56.1097127Z           "evidence": [
2026-06-21T11:53:56.1097212Z             {
2026-06-21T11:53:56.1097326Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:56.1097416Z               "line": 980
2026-06-21T11:53:56.1097501Z             },
2026-06-21T11:53:56.1097583Z             {
2026-06-21T11:53:56.1097693Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1097787Z               "line": 7486
2026-06-21T11:53:56.1097868Z             }
2026-06-21T11:53:56.1097960Z           ]
2026-06-21T11:53:56.1098045Z         }
2026-06-21T11:53:56.1098130Z       }
2026-06-21T11:53:56.1098213Z     },
2026-06-21T11:53:56.1098293Z     {
2026-06-21T11:53:56.1098402Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T11:53:56.1105390Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T11:53:56.1105518Z       "requiredStages": [
2026-06-21T11:53:56.1105605Z         "doc",
2026-06-21T11:53:56.1105686Z         "impl",
2026-06-21T11:53:56.1105771Z         "unit",
2026-06-21T11:53:56.1105852Z         "int"
2026-06-21T11:53:56.1105934Z       ],
2026-06-21T11:53:56.1106142Z       "stages": {
2026-06-21T11:53:56.1106235Z         "doc": {
2026-06-21T11:53:56.1106330Z           "complete": true,
2026-06-21T11:53:56.1106511Z           "evidence": [
2026-06-21T11:53:56.1106587Z             {
2026-06-21T11:53:56.1106729Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T11:53:56.1106811Z               "line": 130
2026-06-21T11:53:56.1106902Z             },
2026-06-21T11:53:56.1106991Z             {
2026-06-21T11:53:56.1107092Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.1107179Z               "line": 96
2026-06-21T11:53:56.1107259Z             }
2026-06-21T11:53:56.1107344Z           ]
2026-06-21T11:53:56.1107431Z         },
2026-06-21T11:53:56.1107527Z         "impl": {
2026-06-21T11:53:56.1107625Z           "complete": true,
2026-06-21T11:53:56.1107706Z           "evidence": [
2026-06-21T11:53:56.1107796Z             {
2026-06-21T11:53:56.1107914Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.1108004Z               "line": 77
2026-06-21T11:53:56.1108080Z             },
2026-06-21T11:53:56.1108157Z             {
2026-06-21T11:53:56.1108285Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.1108366Z               "line": 183
2026-06-21T11:53:56.1108453Z             },
2026-06-21T11:53:56.1108534Z             {
2026-06-21T11:53:56.1108667Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1108753Z               "line": 222
2026-06-21T11:53:56.1108839Z             },
2026-06-21T11:53:56.1108934Z             {
2026-06-21T11:53:56.1109135Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1109225Z               "line": 71
2026-06-21T11:53:56.1109296Z             },
2026-06-21T11:53:56.1109382Z             {
2026-06-21T11:53:56.1109497Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1109592Z               "line": 176
2026-06-21T11:53:56.1109673Z             }
2026-06-21T11:53:56.1109751Z           ]
2026-06-21T11:53:56.1109840Z         },
2026-06-21T11:53:56.1109926Z         "int": {
2026-06-21T11:53:56.1110027Z           "complete": true,
2026-06-21T11:53:56.1110112Z           "evidence": [
2026-06-21T11:53:56.1110192Z             {
2026-06-21T11:53:56.1110327Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T11:53:56.1110413Z               "line": 25
2026-06-21T11:53:56.1110502Z             }
2026-06-21T11:53:56.1110587Z           ]
2026-06-21T11:53:56.1110668Z         },
2026-06-21T11:53:56.1110755Z         "unit": {
2026-06-21T11:53:56.1110855Z           "complete": true,
2026-06-21T11:53:56.1110940Z           "evidence": [
2026-06-21T11:53:56.1111022Z             {
2026-06-21T11:53:56.1111146Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.1111235Z               "line": 341
2026-06-21T11:53:56.1111323Z             },
2026-06-21T11:53:56.1111403Z             {
2026-06-21T11:53:56.1111536Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T11:53:56.1111622Z               "line": 391
2026-06-21T11:53:56.1111704Z             },
2026-06-21T11:53:56.1111789Z             {
2026-06-21T11:53:56.1111918Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1112014Z               "line": 1244
2026-06-21T11:53:56.1112103Z             },
2026-06-21T11:53:56.1112189Z             {
2026-06-21T11:53:56.1112324Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1112414Z               "line": 184
2026-06-21T11:53:56.1112495Z             },
2026-06-21T11:53:56.1112581Z             {
2026-06-21T11:53:56.1112696Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1112789Z               "line": 208
2026-06-21T11:53:56.1112875Z             },
2026-06-21T11:53:56.1112961Z             {
2026-06-21T11:53:56.1113078Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1113163Z               "line": 236
2026-06-21T11:53:56.1113336Z             },
2026-06-21T11:53:56.1113421Z             {
2026-06-21T11:53:56.1113535Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T11:53:56.1113712Z               "line": 945
2026-06-21T11:53:56.1113802Z             }
2026-06-21T11:53:56.1113884Z           ]
2026-06-21T11:53:56.1113970Z         }
2026-06-21T11:53:56.1114055Z       }
2026-06-21T11:53:56.1114146Z     },
2026-06-21T11:53:56.1114228Z     {
2026-06-21T11:53:56.1114322Z       "id": "REQ-SHELL-1",
2026-06-21T11:53:56.1115210Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T11:53:56.1115309Z       "requiredStages": [
2026-06-21T11:53:56.1115395Z         "impl",
2026-06-21T11:53:56.1115482Z         "unit",
2026-06-21T11:53:56.1115559Z         "int"
2026-06-21T11:53:56.1115642Z       ],
2026-06-21T11:53:56.1115732Z       "stages": {
2026-06-21T11:53:56.1115818Z         "doc": {
2026-06-21T11:53:56.1115913Z           "complete": false,
2026-06-21T11:53:56.1116011Z           "evidence": []
2026-06-21T11:53:56.1116093Z         },
2026-06-21T11:53:56.1116179Z         "impl": {
2026-06-21T11:53:56.1116274Z           "complete": true,
2026-06-21T11:53:56.1116364Z           "evidence": [
2026-06-21T11:53:56.1116451Z             {
2026-06-21T11:53:56.1116566Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1116660Z               "line": 189
2026-06-21T11:53:56.1116747Z             },
2026-06-21T11:53:56.1116823Z             {
2026-06-21T11:53:56.1116941Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1117022Z               "line": 268
2026-06-21T11:53:56.1117109Z             },
2026-06-21T11:53:56.1117199Z             {
2026-06-21T11:53:56.1117333Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1117429Z               "line": 27
2026-06-21T11:53:56.1117513Z             },
2026-06-21T11:53:56.1117609Z             {
2026-06-21T11:53:56.1117729Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1117814Z               "line": 52
2026-06-21T11:53:56.1117900Z             },
2026-06-21T11:53:56.1117986Z             {
2026-06-21T11:53:56.1118106Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1118190Z               "line": 144
2026-06-21T11:53:56.1118280Z             },
2026-06-21T11:53:56.1118361Z             {
2026-06-21T11:53:56.1118470Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1118555Z               "line": 176
2026-06-21T11:53:56.1118645Z             },
2026-06-21T11:53:56.1118736Z             {
2026-06-21T11:53:56.1118855Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1118931Z               "line": 22
2026-06-21T11:53:56.1119099Z             },
2026-06-21T11:53:56.1119184Z             {
2026-06-21T11:53:56.1119304Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1119408Z               "line": 65
2026-06-21T11:53:56.1119494Z             },
2026-06-21T11:53:56.1119565Z             {
2026-06-21T11:53:56.1119690Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1119775Z               "line": 76
2026-06-21T11:53:56.1119851Z             },
2026-06-21T11:53:56.1119938Z             {
2026-06-21T11:53:56.1120062Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1120152Z               "line": 151
2026-06-21T11:53:56.1120238Z             },
2026-06-21T11:53:56.1120325Z             {
2026-06-21T11:53:56.1120438Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1120529Z               "line": 210
2026-06-21T11:53:56.1120606Z             },
2026-06-21T11:53:56.1120686Z             {
2026-06-21T11:53:56.1120897Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1120992Z               "line": 259
2026-06-21T11:53:56.1121161Z             },
2026-06-21T11:53:56.1121248Z             {
2026-06-21T11:53:56.1121372Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1121467Z               "line": 281
2026-06-21T11:53:56.1121548Z             },
2026-06-21T11:53:56.1121635Z             {
2026-06-21T11:53:56.1121748Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1121839Z               "line": 294
2026-06-21T11:53:56.1121916Z             },
2026-06-21T11:53:56.1122002Z             {
2026-06-21T11:53:56.1122120Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.1122202Z               "line": 217
2026-06-21T11:53:56.1122288Z             },
2026-06-21T11:53:56.1122373Z             {
2026-06-21T11:53:56.1122488Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.1122569Z               "line": 233
2026-06-21T11:53:56.1122655Z             },
2026-06-21T11:53:56.1122740Z             {
2026-06-21T11:53:56.1122856Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:56.1122946Z               "line": 41
2026-06-21T11:53:56.1123021Z             },
2026-06-21T11:53:56.1123108Z             {
2026-06-21T11:53:56.1123218Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:56.1123312Z               "line": 222
2026-06-21T11:53:56.1123388Z             },
2026-06-21T11:53:56.1123473Z             {
2026-06-21T11:53:56.1123596Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T11:53:56.1123681Z               "line": 173
2026-06-21T11:53:56.1123771Z             },
2026-06-21T11:53:56.1123843Z             {
2026-06-21T11:53:56.1123953Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.1124052Z               "line": 354
2026-06-21T11:53:56.1124130Z             },
2026-06-21T11:53:56.1124220Z             {
2026-06-21T11:53:56.1124324Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.1124420Z               "line": 419
2026-06-21T11:53:56.1124502Z             },
2026-06-21T11:53:56.1124587Z             {
2026-06-21T11:53:56.1124716Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1124797Z               "line": 333
2026-06-21T11:53:56.1124882Z             },
2026-06-21T11:53:56.1124964Z             {
2026-06-21T11:53:56.1125069Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1125150Z               "line": 6320
2026-06-21T11:53:56.1125241Z             },
2026-06-21T11:53:56.1128107Z             {
2026-06-21T11:53:56.1128256Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1128361Z               "line": 6470
2026-06-21T11:53:56.1128440Z             },
2026-06-21T11:53:56.1128527Z             {
2026-06-21T11:53:56.1128638Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1128718Z               "line": 6646
2026-06-21T11:53:56.1128822Z             }
2026-06-21T11:53:56.1128903Z           ]
2026-06-21T11:53:56.1129081Z         },
2026-06-21T11:53:56.1129158Z         "int": {
2026-06-21T11:53:56.1129258Z           "complete": true,
2026-06-21T11:53:56.1129350Z           "evidence": [
2026-06-21T11:53:56.1129453Z             {
2026-06-21T11:53:56.1129583Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.1129663Z               "line": 713
2026-06-21T11:53:56.1129748Z             },
2026-06-21T11:53:56.1129829Z             {
2026-06-21T11:53:56.1129968Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T11:53:56.1130045Z               "line": 8
2026-06-21T11:53:56.1130130Z             },
2026-06-21T11:53:56.1130212Z             {
2026-06-21T11:53:56.1130335Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T11:53:56.1130421Z               "line": 49
2026-06-21T11:53:56.1130498Z             },
2026-06-21T11:53:56.1130580Z             {
2026-06-21T11:53:56.1130703Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1130927Z               "line": 778
2026-06-21T11:53:56.1131098Z             },
2026-06-21T11:53:56.1131181Z             {
2026-06-21T11:53:56.1131308Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1131385Z               "line": 1213
2026-06-21T11:53:56.1131466Z             },
2026-06-21T11:53:56.1131548Z             {
2026-06-21T11:53:56.1131665Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T11:53:56.1131765Z               "line": 17
2026-06-21T11:53:56.1131846Z             },
2026-06-21T11:53:56.1131932Z             {
2026-06-21T11:53:56.1132036Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T11:53:56.1132132Z               "line": 14
2026-06-21T11:53:56.1132204Z             }
2026-06-21T11:53:56.1132285Z           ]
2026-06-21T11:53:56.1132365Z         },
2026-06-21T11:53:56.1132448Z         "unit": {
2026-06-21T11:53:56.1132547Z           "complete": true,
2026-06-21T11:53:56.1132632Z           "evidence": [
2026-06-21T11:53:56.1132719Z             {
2026-06-21T11:53:56.1132848Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1132929Z               "line": 246
2026-06-21T11:53:56.1133018Z             },
2026-06-21T11:53:56.1133092Z             {
2026-06-21T11:53:56.1133210Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1133300Z               "line": 279
2026-06-21T11:53:56.1133382Z             },
2026-06-21T11:53:56.1133468Z             {
2026-06-21T11:53:56.1133576Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1133668Z               "line": 319
2026-06-21T11:53:56.1133741Z             },
2026-06-21T11:53:56.1133816Z             {
2026-06-21T11:53:56.1133933Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1134019Z               "line": 599
2026-06-21T11:53:56.1134105Z             },
2026-06-21T11:53:56.1134184Z             {
2026-06-21T11:53:56.1134312Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1134394Z               "line": 672
2026-06-21T11:53:56.1134481Z             },
2026-06-21T11:53:56.1134570Z             {
2026-06-21T11:53:56.1134695Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1134790Z               "line": 816
2026-06-21T11:53:56.1134866Z             },
2026-06-21T11:53:56.1134941Z             {
2026-06-21T11:53:56.1135052Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.1135133Z               "line": 595
2026-06-21T11:53:56.1135223Z             },
2026-06-21T11:53:56.1135305Z             {
2026-06-21T11:53:56.1135434Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T11:53:56.1135514Z               "line": 399
2026-06-21T11:53:56.1135600Z             },
2026-06-21T11:53:56.1135672Z             {
2026-06-21T11:53:56.1135781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1135876Z               "line": 8976
2026-06-21T11:53:56.1135959Z             },
2026-06-21T11:53:56.1136039Z             {
2026-06-21T11:53:56.1136149Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1136235Z               "line": 9300
2026-06-21T11:53:56.1136321Z             },
2026-06-21T11:53:56.1136410Z             {
2026-06-21T11:53:56.1136510Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1136598Z               "line": 9717
2026-06-21T11:53:56.1136683Z             }
2026-06-21T11:53:56.1136768Z           ]
2026-06-21T11:53:56.1136843Z         }
2026-06-21T11:53:56.1136920Z       }
2026-06-21T11:53:56.1137000Z     },
2026-06-21T11:53:56.1137080Z     {
2026-06-21T11:53:56.1137165Z       "id": "REQ-SHELL-2",
2026-06-21T11:53:56.1138662Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T11:53:56.1138893Z       "requiredStages": [
2026-06-21T11:53:56.1139058Z         "impl",
2026-06-21T11:53:56.1139136Z         "unit",
2026-06-21T11:53:56.1139212Z         "int"
2026-06-21T11:53:56.1139301Z       ],
2026-06-21T11:53:56.1139382Z       "stages": {
2026-06-21T11:53:56.1139477Z         "doc": {
2026-06-21T11:53:56.1139558Z           "complete": false,
2026-06-21T11:53:56.1139646Z           "evidence": []
2026-06-21T11:53:56.1139732Z         },
2026-06-21T11:53:56.1139813Z         "impl": {
2026-06-21T11:53:56.1139910Z           "complete": true,
2026-06-21T11:53:56.1139989Z           "evidence": [
2026-06-21T11:53:56.1140075Z             {
2026-06-21T11:53:56.1140205Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:56.1140304Z               "line": 217
2026-06-21T11:53:56.1140394Z             },
2026-06-21T11:53:56.1140472Z             {
2026-06-21T11:53:56.1140605Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.1140690Z               "line": 403
2026-06-21T11:53:56.1140782Z             },
2026-06-21T11:53:56.1140862Z             {
2026-06-21T11:53:56.1140986Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T11:53:56.1141082Z               "line": 250
2026-06-21T11:53:56.1141163Z             },
2026-06-21T11:53:56.1141239Z             {
2026-06-21T11:53:56.1141348Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.1141440Z               "line": 403
2026-06-21T11:53:56.1141515Z             },
2026-06-21T11:53:56.1141601Z             {
2026-06-21T11:53:56.1141726Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1141811Z               "line": 30
2026-06-21T11:53:56.1141897Z             },
2026-06-21T11:53:56.1141983Z             {
2026-06-21T11:53:56.1142108Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1142191Z               "line": 409
2026-06-21T11:53:56.1142277Z             },
2026-06-21T11:53:56.1142363Z             {
2026-06-21T11:53:56.1142469Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1142558Z               "line": 445
2026-06-21T11:53:56.1142644Z             },
2026-06-21T11:53:56.1142726Z             {
2026-06-21T11:53:56.1142831Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1142916Z               "line": 660
2026-06-21T11:53:56.1142998Z             },
2026-06-21T11:53:56.1143079Z             {
2026-06-21T11:53:56.1143197Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.1143284Z               "line": 348
2026-06-21T11:53:56.1143365Z             },
2026-06-21T11:53:56.1143446Z             {
2026-06-21T11:53:56.1143565Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1143656Z               "line": 115
2026-06-21T11:53:56.1143737Z             },
2026-06-21T11:53:56.1143818Z             {
2026-06-21T11:53:56.1143937Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1144023Z               "line": 120
2026-06-21T11:53:56.1144103Z             },
2026-06-21T11:53:56.1144180Z             {
2026-06-21T11:53:56.1144301Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1144385Z               "line": 374
2026-06-21T11:53:56.1144461Z             },
2026-06-21T11:53:56.1144532Z             {
2026-06-21T11:53:56.1144655Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1144735Z               "line": 500
2026-06-21T11:53:56.1144811Z             },
2026-06-21T11:53:56.1144896Z             {
2026-06-21T11:53:56.1145012Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1145102Z               "line": 24
2026-06-21T11:53:56.1145187Z             },
2026-06-21T11:53:56.1145374Z             {
2026-06-21T11:53:56.1145478Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1145646Z               "line": 76
2026-06-21T11:53:56.1145731Z             },
2026-06-21T11:53:56.1145816Z             {
2026-06-21T11:53:56.1145932Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1146022Z               "line": 154
2026-06-21T11:53:56.1146103Z             },
2026-06-21T11:53:56.1146189Z             {
2026-06-21T11:53:56.1146308Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1146394Z               "line": 177
2026-06-21T11:53:56.1146470Z             },
2026-06-21T11:53:56.1146552Z             {
2026-06-21T11:53:56.1146661Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1146737Z               "line": 273
2026-06-21T11:53:56.1146824Z             },
2026-06-21T11:53:56.1146905Z             {
2026-06-21T11:53:56.1147033Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1147119Z               "line": 456
2026-06-21T11:53:56.1147205Z             },
2026-06-21T11:53:56.1147295Z             {
2026-06-21T11:53:56.1147403Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1147485Z               "line": 538
2026-06-21T11:53:56.1147560Z             },
2026-06-21T11:53:56.1147645Z             {
2026-06-21T11:53:56.1147768Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T11:53:56.1147850Z               "line": 27
2026-06-21T11:53:56.1147936Z             },
2026-06-21T11:53:56.1148020Z             {
2026-06-21T11:53:56.1148146Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T11:53:56.1148226Z               "line": 48
2026-06-21T11:53:56.1148307Z             },
2026-06-21T11:53:56.1148388Z             {
2026-06-21T11:53:56.1148513Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1148594Z               "line": 517
2026-06-21T11:53:56.1148678Z             },
2026-06-21T11:53:56.1148761Z             {
2026-06-21T11:53:56.1148861Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1149037Z               "line": 1921
2026-06-21T11:53:56.1149114Z             },
2026-06-21T11:53:56.1149190Z             {
2026-06-21T11:53:56.1149303Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1149396Z               "line": 6334
2026-06-21T11:53:56.1149486Z             },
2026-06-21T11:53:56.1149570Z             {
2026-06-21T11:53:56.1149672Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1149753Z               "line": 6395
2026-06-21T11:53:56.1149838Z             },
2026-06-21T11:53:56.1149923Z             {
2026-06-21T11:53:56.1150023Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1150118Z               "line": 6423
2026-06-21T11:53:56.1150197Z             },
2026-06-21T11:53:56.1150278Z             {
2026-06-21T11:53:56.1150378Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1150470Z               "line": 6477
2026-06-21T11:53:56.1150554Z             },
2026-06-21T11:53:56.1150635Z             {
2026-06-21T11:53:56.1150746Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1150832Z               "line": 6732
2026-06-21T11:53:56.1150916Z             },
2026-06-21T11:53:56.1150999Z             {
2026-06-21T11:53:56.1151094Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1151188Z               "line": 6792
2026-06-21T11:53:56.1151274Z             },
2026-06-21T11:53:56.1151356Z             {
2026-06-21T11:53:56.1151465Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.1151541Z               "line": 298
2026-06-21T11:53:56.1151623Z             },
2026-06-21T11:53:56.1151714Z             {
2026-06-21T11:53:56.1151814Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.1151899Z               "line": 339
2026-06-21T11:53:56.1151981Z             }
2026-06-21T11:53:56.1152062Z           ]
2026-06-21T11:53:56.1152248Z         },
2026-06-21T11:53:56.1152330Z         "int": {
2026-06-21T11:53:56.1152409Z           "complete": true,
2026-06-21T11:53:56.1152606Z           "evidence": [
2026-06-21T11:53:56.1152691Z             {
2026-06-21T11:53:56.1152819Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.1152904Z               "line": 706
2026-06-21T11:53:56.1152991Z             },
2026-06-21T11:53:56.1153071Z             {
2026-06-21T11:53:56.1153195Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1153282Z               "line": 778
2026-06-21T11:53:56.1153363Z             },
2026-06-21T11:53:56.1153447Z             {
2026-06-21T11:53:56.1153558Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1153643Z               "line": 1213
2026-06-21T11:53:56.1153734Z             },
2026-06-21T11:53:56.1153815Z             {
2026-06-21T11:53:56.1153935Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T11:53:56.1154020Z               "line": 18
2026-06-21T11:53:56.1154105Z             }
2026-06-21T11:53:56.1154188Z           ]
2026-06-21T11:53:56.1154273Z         },
2026-06-21T11:53:56.1154359Z         "unit": {
2026-06-21T11:53:56.1154440Z           "complete": true,
2026-06-21T11:53:56.1154531Z           "evidence": [
2026-06-21T11:53:56.1154612Z             {
2026-06-21T11:53:56.1154735Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1154807Z               "line": 744
2026-06-21T11:53:56.1154894Z             },
2026-06-21T11:53:56.1154973Z             {
2026-06-21T11:53:56.1155092Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T11:53:56.1155173Z               "line": 796
2026-06-21T11:53:56.1155258Z             },
2026-06-21T11:53:56.1155347Z             {
2026-06-21T11:53:56.1155466Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1155553Z               "line": 705
2026-06-21T11:53:56.1155633Z             },
2026-06-21T11:53:56.1155718Z             {
2026-06-21T11:53:56.1155839Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1155920Z               "line": 754
2026-06-21T11:53:56.1156010Z             },
2026-06-21T11:53:56.1156091Z             {
2026-06-21T11:53:56.1156206Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1156295Z               "line": 778
2026-06-21T11:53:56.1156376Z             },
2026-06-21T11:53:56.1156464Z             {
2026-06-21T11:53:56.1156573Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1156663Z               "line": 603
2026-06-21T11:53:56.1156744Z             },
2026-06-21T11:53:56.1156826Z             {
2026-06-21T11:53:56.1156939Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1157020Z               "line": 624
2026-06-21T11:53:56.1157108Z             },
2026-06-21T11:53:56.1157178Z             {
2026-06-21T11:53:56.1157292Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1157384Z               "line": 660
2026-06-21T11:53:56.1157465Z             },
2026-06-21T11:53:56.1157554Z             {
2026-06-21T11:53:56.1157675Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1157766Z               "line": 714
2026-06-21T11:53:56.1157841Z             },
2026-06-21T11:53:56.1157925Z             {
2026-06-21T11:53:56.1158035Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1158120Z               "line": 732
2026-06-21T11:53:56.1158210Z             },
2026-06-21T11:53:56.1158290Z             {
2026-06-21T11:53:56.1158410Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1158496Z               "line": 766
2026-06-21T11:53:56.1158571Z             },
2026-06-21T11:53:56.1158653Z             {
2026-06-21T11:53:56.1158768Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T11:53:56.1158862Z               "line": 841
2026-06-21T11:53:56.1159106Z             },
2026-06-21T11:53:56.1159187Z             {
2026-06-21T11:53:56.1159306Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T11:53:56.1159530Z               "line": 85
2026-06-21T11:53:56.1159602Z             },
2026-06-21T11:53:56.1159679Z             {
2026-06-21T11:53:56.1159778Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1159854Z               "line": 8044
2026-06-21T11:53:56.1159936Z             },
2026-06-21T11:53:56.1160022Z             {
2026-06-21T11:53:56.1160121Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1160212Z               "line": 9054
2026-06-21T11:53:56.1160290Z             },
2026-06-21T11:53:56.1160380Z             {
2026-06-21T11:53:56.1160478Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1160563Z               "line": 9124
2026-06-21T11:53:56.1160649Z             },
2026-06-21T11:53:56.1160734Z             {
2026-06-21T11:53:56.1160833Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1160929Z               "line": 9162
2026-06-21T11:53:56.1161010Z             }
2026-06-21T11:53:56.1161091Z           ]
2026-06-21T11:53:56.1161171Z         }
2026-06-21T11:53:56.1161249Z       }
2026-06-21T11:53:56.1161339Z     },
2026-06-21T11:53:56.1161425Z     {
2026-06-21T11:53:56.1161515Z       "id": "REQ-SHELL-3",
2026-06-21T11:53:56.1163350Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T11:53:56.1163450Z       "requiredStages": [
2026-06-21T11:53:56.1163537Z         "impl",
2026-06-21T11:53:56.1163622Z         "unit",
2026-06-21T11:53:56.1163712Z         "int"
2026-06-21T11:53:56.1163794Z       ],
2026-06-21T11:53:56.1163880Z       "stages": {
2026-06-21T11:53:56.1163965Z         "doc": {
2026-06-21T11:53:56.1164065Z           "complete": false,
2026-06-21T11:53:56.1164147Z           "evidence": []
2026-06-21T11:53:56.1164227Z         },
2026-06-21T11:53:56.1164317Z         "impl": {
2026-06-21T11:53:56.1164399Z           "complete": true,
2026-06-21T11:53:56.1164481Z           "evidence": [
2026-06-21T11:53:56.1164575Z             {
2026-06-21T11:53:56.1164695Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.1164777Z               "line": 229
2026-06-21T11:53:56.1164861Z             },
2026-06-21T11:53:56.1164938Z             {
2026-06-21T11:53:56.1165063Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1165149Z               "line": 36
2026-06-21T11:53:56.1165238Z             },
2026-06-21T11:53:56.1165329Z             {
2026-06-21T11:53:56.1165440Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1165528Z               "line": 137
2026-06-21T11:53:56.1165609Z             },
2026-06-21T11:53:56.1165690Z             {
2026-06-21T11:53:56.1165809Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1165898Z               "line": 153
2026-06-21T11:53:56.1165983Z             },
2026-06-21T11:53:56.1166065Z             {
2026-06-21T11:53:56.1166184Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1166274Z               "line": 165
2026-06-21T11:53:56.1166365Z             },
2026-06-21T11:53:56.1166447Z             {
2026-06-21T11:53:56.1166565Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1166646Z               "line": 242
2026-06-21T11:53:56.1166733Z             },
2026-06-21T11:53:56.1166814Z             {
2026-06-21T11:53:56.1167014Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1167109Z               "line": 267
2026-06-21T11:53:56.1167261Z             },
2026-06-21T11:53:56.1167339Z             {
2026-06-21T11:53:56.1167467Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1167547Z               "line": 293
2026-06-21T11:53:56.1167639Z             },
2026-06-21T11:53:56.1167710Z             {
2026-06-21T11:53:56.1167824Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T11:53:56.1167910Z               "line": 51
2026-06-21T11:53:56.1167997Z             },
2026-06-21T11:53:56.1168072Z             {
2026-06-21T11:53:56.1168182Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1168278Z               "line": 333
2026-06-21T11:53:56.1168359Z             },
2026-06-21T11:53:56.1168443Z             {
2026-06-21T11:53:56.1168547Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1168639Z               "line": 373
2026-06-21T11:53:56.1168732Z             },
2026-06-21T11:53:56.1168808Z             {
2026-06-21T11:53:56.1168922Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1169099Z               "line": 602
2026-06-21T11:53:56.1169189Z             },
2026-06-21T11:53:56.1169271Z             {
2026-06-21T11:53:56.1169394Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1169498Z               "line": 132
2026-06-21T11:53:56.1169577Z             },
2026-06-21T11:53:56.1169662Z             {
2026-06-21T11:53:56.1169775Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1169871Z               "line": 448
2026-06-21T11:53:56.1169957Z             },
2026-06-21T11:53:56.1170033Z             {
2026-06-21T11:53:56.1170157Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T11:53:56.1170239Z               "line": 74
2026-06-21T11:53:56.1170324Z             },
2026-06-21T11:53:56.1170405Z             {
2026-06-21T11:53:56.1170530Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1170620Z               "line": 605
2026-06-21T11:53:56.1170705Z             },
2026-06-21T11:53:56.1170787Z             {
2026-06-21T11:53:56.1170888Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1170986Z               "line": 396
2026-06-21T11:53:56.1171067Z             },
2026-06-21T11:53:56.1171152Z             {
2026-06-21T11:53:56.1171261Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1171337Z               "line": 6518
2026-06-21T11:53:56.1171422Z             }
2026-06-21T11:53:56.1171503Z           ]
2026-06-21T11:53:56.1171585Z         },
2026-06-21T11:53:56.1171665Z         "int": {
2026-06-21T11:53:56.1171760Z           "complete": true,
2026-06-21T11:53:56.1171852Z           "evidence": [
2026-06-21T11:53:56.1171933Z             {
2026-06-21T11:53:56.1172041Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1172133Z               "line": 1262
2026-06-21T11:53:56.1172219Z             },
2026-06-21T11:53:56.1172300Z             {
2026-06-21T11:53:56.1172414Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T11:53:56.1172510Z               "line": 17
2026-06-21T11:53:56.1172590Z             }
2026-06-21T11:53:56.1172676Z           ]
2026-06-21T11:53:56.1172758Z         },
2026-06-21T11:53:56.1172848Z         "unit": {
2026-06-21T11:53:56.1172934Z           "complete": true,
2026-06-21T11:53:56.1173029Z           "evidence": [
2026-06-21T11:53:56.1173120Z             {
2026-06-21T11:53:56.1173233Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1173320Z               "line": 311
2026-06-21T11:53:56.1173402Z             },
2026-06-21T11:53:56.1173487Z             {
2026-06-21T11:53:56.1173606Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1173693Z               "line": 325
2026-06-21T11:53:56.1173769Z             },
2026-06-21T11:53:56.1173943Z             {
2026-06-21T11:53:56.1174067Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1174229Z               "line": 343
2026-06-21T11:53:56.1174310Z             },
2026-06-21T11:53:56.1174392Z             {
2026-06-21T11:53:56.1174512Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1174601Z               "line": 364
2026-06-21T11:53:56.1174683Z             },
2026-06-21T11:53:56.1174759Z             {
2026-06-21T11:53:56.1174873Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T11:53:56.1174954Z               "line": 376
2026-06-21T11:53:56.1175041Z             },
2026-06-21T11:53:56.1175121Z             {
2026-06-21T11:53:56.1175240Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1175318Z               "line": 897
2026-06-21T11:53:56.1175408Z             },
2026-06-21T11:53:56.1175494Z             {
2026-06-21T11:53:56.1175618Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1175713Z               "line": 957
2026-06-21T11:53:56.1175793Z             },
2026-06-21T11:53:56.1175884Z             {
2026-06-21T11:53:56.1176000Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T11:53:56.1176093Z               "line": 338
2026-06-21T11:53:56.1176179Z             },
2026-06-21T11:53:56.1176265Z             {
2026-06-21T11:53:56.1176378Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.1176453Z               "line": 769
2026-06-21T11:53:56.1176543Z             },
2026-06-21T11:53:56.1176625Z             {
2026-06-21T11:53:56.1176730Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1176820Z               "line": 8836
2026-06-21T11:53:56.1176901Z             }
2026-06-21T11:53:56.1176987Z           ]
2026-06-21T11:53:56.1177068Z         }
2026-06-21T11:53:56.1177158Z       }
2026-06-21T11:53:56.1177240Z     },
2026-06-21T11:53:56.1177326Z     {
2026-06-21T11:53:56.1177416Z       "id": "REQ-SHELL-4",
2026-06-21T11:53:56.1179349Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T11:53:56.1179472Z       "requiredStages": [
2026-06-21T11:53:56.1179559Z         "doc",
2026-06-21T11:53:56.1179630Z         "impl",
2026-06-21T11:53:56.1179715Z         "unit",
2026-06-21T11:53:56.1179802Z         "int"
2026-06-21T11:53:56.1179883Z       ],
2026-06-21T11:53:56.1179964Z       "stages": {
2026-06-21T11:53:56.1180044Z         "doc": {
2026-06-21T11:53:56.1180141Z           "complete": true,
2026-06-21T11:53:56.1180236Z           "evidence": [
2026-06-21T11:53:56.1180311Z             {
2026-06-21T11:53:56.1180422Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1180503Z               "line": 281
2026-06-21T11:53:56.1180588Z             },
2026-06-21T11:53:56.1180670Z             {
2026-06-21T11:53:56.1180898Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T11:53:56.1180994Z               "line": 88
2026-06-21T11:53:56.1181071Z             }
2026-06-21T11:53:56.1181147Z           ]
2026-06-21T11:53:56.1181237Z         },
2026-06-21T11:53:56.1181318Z         "impl": {
2026-06-21T11:53:56.1181415Z           "complete": true,
2026-06-21T11:53:56.1181500Z           "evidence": [
2026-06-21T11:53:56.1181584Z             {
2026-06-21T11:53:56.1181708Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.1181789Z               "line": 243
2026-06-21T11:53:56.1181873Z             },
2026-06-21T11:53:56.1182068Z             {
2026-06-21T11:53:56.1182197Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T11:53:56.1182364Z               "line": 61
2026-06-21T11:53:56.1182446Z             },
2026-06-21T11:53:56.1182535Z             {
2026-06-21T11:53:56.1182640Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1182727Z               "line": 218
2026-06-21T11:53:56.1182812Z             },
2026-06-21T11:53:56.1182897Z             {
2026-06-21T11:53:56.1183013Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1183103Z               "line": 245
2026-06-21T11:53:56.1183193Z             },
2026-06-21T11:53:56.1183274Z             {
2026-06-21T11:53:56.1183394Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1183475Z               "line": 616
2026-06-21T11:53:56.1183555Z             },
2026-06-21T11:53:56.1183638Z             {
2026-06-21T11:53:56.1183761Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1183851Z               "line": 1191
2026-06-21T11:53:56.1183933Z             },
2026-06-21T11:53:56.1184019Z             {
2026-06-21T11:53:56.1184127Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1184219Z               "line": 1203
2026-06-21T11:53:56.1184305Z             },
2026-06-21T11:53:56.1184390Z             {
2026-06-21T11:53:56.1184499Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1184580Z               "line": 1244
2026-06-21T11:53:56.1184662Z             },
2026-06-21T11:53:56.1184747Z             {
2026-06-21T11:53:56.1184866Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1184957Z               "line": 456
2026-06-21T11:53:56.1185043Z             },
2026-06-21T11:53:56.1185128Z             {
2026-06-21T11:53:56.1185243Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1185338Z               "line": 44
2026-06-21T11:53:56.1185419Z             },
2026-06-21T11:53:56.1185510Z             {
2026-06-21T11:53:56.1185629Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1185715Z               "line": 208
2026-06-21T11:53:56.1185805Z             },
2026-06-21T11:53:56.1185887Z             {
2026-06-21T11:53:56.1186010Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1186100Z               "line": 227
2026-06-21T11:53:56.1186188Z             },
2026-06-21T11:53:56.1186278Z             {
2026-06-21T11:53:56.1186397Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1186487Z               "line": 253
2026-06-21T11:53:56.1186570Z             },
2026-06-21T11:53:56.1186658Z             {
2026-06-21T11:53:56.1186776Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1186853Z               "line": 272
2026-06-21T11:53:56.1186943Z             },
2026-06-21T11:53:56.1187022Z             {
2026-06-21T11:53:56.1187142Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1187233Z               "line": 392
2026-06-21T11:53:56.1187318Z             },
2026-06-21T11:53:56.1187399Z             {
2026-06-21T11:53:56.1187519Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1187605Z               "line": 421
2026-06-21T11:53:56.1187685Z             },
2026-06-21T11:53:56.1187766Z             {
2026-06-21T11:53:56.1187877Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1187962Z               "line": 439
2026-06-21T11:53:56.1188043Z             },
2026-06-21T11:53:56.1188120Z             {
2026-06-21T11:53:56.1188239Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1188319Z               "line": 458
2026-06-21T11:53:56.1188405Z             },
2026-06-21T11:53:56.1188487Z             {
2026-06-21T11:53:56.1188601Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1188682Z               "line": 486
2026-06-21T11:53:56.1189040Z             },
2026-06-21T11:53:56.1189117Z             {
2026-06-21T11:53:56.1189234Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1189479Z               "line": 624
2026-06-21T11:53:56.1189563Z             },
2026-06-21T11:53:56.1189677Z             {
2026-06-21T11:53:56.1189792Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1189899Z               "line": 829
2026-06-21T11:53:56.1189984Z             },
2026-06-21T11:53:56.1190052Z             {
2026-06-21T11:53:56.1190181Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1190285Z               "line": 435
2026-06-21T11:53:56.1190377Z             },
2026-06-21T11:53:56.1190462Z             {
2026-06-21T11:53:56.1190557Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1190648Z               "line": 6574
2026-06-21T11:53:56.1190734Z             }
2026-06-21T11:53:56.1190820Z           ]
2026-06-21T11:53:56.1190905Z         },
2026-06-21T11:53:56.1190987Z         "int": {
2026-06-21T11:53:56.1191082Z           "complete": true,
2026-06-21T11:53:56.1191168Z           "evidence": [
2026-06-21T11:53:56.1191244Z             {
2026-06-21T11:53:56.1191364Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T11:53:56.1191463Z               "line": 18
2026-06-21T11:53:56.1191544Z             }
2026-06-21T11:53:56.1191626Z           ]
2026-06-21T11:53:56.1191712Z         },
2026-06-21T11:53:56.1191787Z         "unit": {
2026-06-21T11:53:56.1191883Z           "complete": true,
2026-06-21T11:53:56.1191965Z           "evidence": [
2026-06-21T11:53:56.1192050Z             {
2026-06-21T11:53:56.1192168Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1192258Z               "line": 1479
2026-06-21T11:53:56.1192339Z             },
2026-06-21T11:53:56.1192419Z             {
2026-06-21T11:53:56.1192537Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1192624Z               "line": 1508
2026-06-21T11:53:56.1192710Z             },
2026-06-21T11:53:56.1192795Z             {
2026-06-21T11:53:56.1192919Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1193006Z               "line": 504
2026-06-21T11:53:56.1193081Z             },
2026-06-21T11:53:56.1193171Z             {
2026-06-21T11:53:56.1193287Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1193377Z               "line": 514
2026-06-21T11:53:56.1193458Z             },
2026-06-21T11:53:56.1193549Z             {
2026-06-21T11:53:56.1193668Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1193758Z               "line": 531
2026-06-21T11:53:56.1193844Z             },
2026-06-21T11:53:56.1193926Z             {
2026-06-21T11:53:56.1194049Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1194130Z               "line": 543
2026-06-21T11:53:56.1194217Z             },
2026-06-21T11:53:56.1194311Z             {
2026-06-21T11:53:56.1194421Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T11:53:56.1194513Z               "line": 555
2026-06-21T11:53:56.1194598Z             },
2026-06-21T11:53:56.1194678Z             {
2026-06-21T11:53:56.1194794Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1197573Z               "line": 1145
2026-06-21T11:53:56.1197687Z             },
2026-06-21T11:53:56.1197769Z             {
2026-06-21T11:53:56.1197897Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.1197983Z               "line": 776
2026-06-21T11:53:56.1198064Z             }
2026-06-21T11:53:56.1198145Z           ]
2026-06-21T11:53:56.1198235Z         }
2026-06-21T11:53:56.1198316Z       }
2026-06-21T11:53:56.1198389Z     },
2026-06-21T11:53:56.1198474Z     {
2026-06-21T11:53:56.1198564Z       "id": "REQ-SHELL-5",
2026-06-21T11:53:56.1199925Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T11:53:56.1200262Z       "requiredStages": [
2026-06-21T11:53:56.1200343Z         "doc",
2026-06-21T11:53:56.1200426Z         "impl",
2026-06-21T11:53:56.1200512Z         "unit",
2026-06-21T11:53:56.1200593Z         "int"
2026-06-21T11:53:56.1200679Z       ],
2026-06-21T11:53:56.1200764Z       "stages": {
2026-06-21T11:53:56.1200845Z         "doc": {
2026-06-21T11:53:56.1200937Z           "complete": true,
2026-06-21T11:53:56.1201022Z           "evidence": [
2026-06-21T11:53:56.1201102Z             {
2026-06-21T11:53:56.1201198Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1201285Z               "line": 284
2026-06-21T11:53:56.1201371Z             }
2026-06-21T11:53:56.1201455Z           ]
2026-06-21T11:53:56.1201528Z         },
2026-06-21T11:53:56.1201610Z         "impl": {
2026-06-21T11:53:56.1201704Z           "complete": true,
2026-06-21T11:53:56.1201794Z           "evidence": [
2026-06-21T11:53:56.1201871Z             {
2026-06-21T11:53:56.1201999Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T11:53:56.1202085Z               "line": 260
2026-06-21T11:53:56.1202172Z             }
2026-06-21T11:53:56.1202249Z           ]
2026-06-21T11:53:56.1202323Z         },
2026-06-21T11:53:56.1202410Z         "int": {
2026-06-21T11:53:56.1202501Z           "complete": true,
2026-06-21T11:53:56.1202592Z           "evidence": [
2026-06-21T11:53:56.1202676Z             {
2026-06-21T11:53:56.1202804Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1202895Z               "line": 827
2026-06-21T11:53:56.1202969Z             },
2026-06-21T11:53:56.1203055Z             {
2026-06-21T11:53:56.1203164Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1203261Z               "line": 1290
2026-06-21T11:53:56.1203341Z             },
2026-06-21T11:53:56.1203426Z             {
2026-06-21T11:53:56.1203566Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T11:53:56.1203651Z               "line": 23
2026-06-21T11:53:56.1203736Z             }
2026-06-21T11:53:56.1203819Z           ]
2026-06-21T11:53:56.1203889Z         },
2026-06-21T11:53:56.1203984Z         "unit": {
2026-06-21T11:53:56.1204060Z           "complete": true,
2026-06-21T11:53:56.1204157Z           "evidence": [
2026-06-21T11:53:56.1204232Z             {
2026-06-21T11:53:56.1204352Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T11:53:56.1204438Z               "line": 803
2026-06-21T11:53:56.1204519Z             }
2026-06-21T11:53:56.1204600Z           ]
2026-06-21T11:53:56.1204676Z         }
2026-06-21T11:53:56.1204753Z       }
2026-06-21T11:53:56.1204838Z     },
2026-06-21T11:53:56.1204914Z     {
2026-06-21T11:53:56.1205005Z       "id": "REQ-START-1",
2026-06-21T11:53:56.1205195Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T11:53:56.1205291Z       "requiredStages": [
2026-06-21T11:53:56.1205373Z         "impl",
2026-06-21T11:53:56.1205449Z         "unit"
2026-06-21T11:53:56.1205534Z       ],
2026-06-21T11:53:56.1205623Z       "stages": {
2026-06-21T11:53:56.1205695Z         "doc": {
2026-06-21T11:53:56.1205792Z           "complete": false,
2026-06-21T11:53:56.1205891Z           "evidence": []
2026-06-21T11:53:56.1205976Z         },
2026-06-21T11:53:56.1206063Z         "impl": {
2026-06-21T11:53:56.1206149Z           "complete": true,
2026-06-21T11:53:56.1206239Z           "evidence": [
2026-06-21T11:53:56.1206320Z             {
2026-06-21T11:53:56.1206440Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T11:53:56.1206530Z               "line": 16
2026-06-21T11:53:56.1206610Z             }
2026-06-21T11:53:56.1206693Z           ]
2026-06-21T11:53:56.1206850Z         },
2026-06-21T11:53:56.1206930Z         "int": {
2026-06-21T11:53:56.1207017Z           "complete": false,
2026-06-21T11:53:56.1207159Z           "evidence": []
2026-06-21T11:53:56.1207249Z         },
2026-06-21T11:53:56.1207332Z         "unit": {
2026-06-21T11:53:56.1207422Z           "complete": true,
2026-06-21T11:53:56.1207497Z           "evidence": [
2026-06-21T11:53:56.1207584Z             {
2026-06-21T11:53:56.1207694Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T11:53:56.1207779Z               "line": 48
2026-06-21T11:53:56.1207859Z             },
2026-06-21T11:53:56.1207940Z             {
2026-06-21T11:53:56.1208049Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T11:53:56.1208133Z               "line": 63
2026-06-21T11:53:56.1208214Z             }
2026-06-21T11:53:56.1208291Z           ]
2026-06-21T11:53:56.1208377Z         }
2026-06-21T11:53:56.1208462Z       }
2026-06-21T11:53:56.1208543Z     },
2026-06-21T11:53:56.1208624Z     {
2026-06-21T11:53:56.1208710Z       "id": "REQ-START-2",
2026-06-21T11:53:56.1208858Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T11:53:56.1209030Z       "requiredStages": [
2026-06-21T11:53:56.1209120Z         "impl",
2026-06-21T11:53:56.1209196Z         "unit",
2026-06-21T11:53:56.1209283Z         "int"
2026-06-21T11:53:56.1209363Z       ],
2026-06-21T11:53:56.1209458Z       "stages": {
2026-06-21T11:53:56.1209540Z         "doc": {
2026-06-21T11:53:56.1209631Z           "complete": false,
2026-06-21T11:53:56.1209726Z           "evidence": []
2026-06-21T11:53:56.1209802Z         },
2026-06-21T11:53:56.1209884Z         "impl": {
2026-06-21T11:53:56.1209988Z           "complete": true,
2026-06-21T11:53:56.1210065Z           "evidence": [
2026-06-21T11:53:56.1210146Z             {
2026-06-21T11:53:56.1210261Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1210341Z               "line": 16
2026-06-21T11:53:56.1210427Z             },
2026-06-21T11:53:56.1210509Z             {
2026-06-21T11:53:56.1210623Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1210707Z               "line": 115
2026-06-21T11:53:56.1210797Z             },
2026-06-21T11:53:56.1210883Z             {
2026-06-21T11:53:56.1210991Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1211072Z               "line": 300
2026-06-21T11:53:56.1211153Z             }
2026-06-21T11:53:56.1211225Z           ]
2026-06-21T11:53:56.1211302Z         },
2026-06-21T11:53:56.1211386Z         "int": {
2026-06-21T11:53:56.1211468Z           "complete": true,
2026-06-21T11:53:56.1211554Z           "evidence": [
2026-06-21T11:53:56.1211640Z             {
2026-06-21T11:53:56.1211758Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:56.1211855Z               "line": 186
2026-06-21T11:53:56.1211936Z             }
2026-06-21T11:53:56.1212020Z           ]
2026-06-21T11:53:56.1212092Z         },
2026-06-21T11:53:56.1212179Z         "unit": {
2026-06-21T11:53:56.1212274Z           "complete": true,
2026-06-21T11:53:56.1212359Z           "evidence": [
2026-06-21T11:53:56.1212441Z             {
2026-06-21T11:53:56.1212550Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1212645Z               "line": 590
2026-06-21T11:53:56.1212722Z             },
2026-06-21T11:53:56.1212814Z             {
2026-06-21T11:53:56.1212912Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1212998Z               "line": 623
2026-06-21T11:53:56.1213080Z             }
2026-06-21T11:53:56.1213157Z           ]
2026-06-21T11:53:56.1213246Z         }
2026-06-21T11:53:56.1213330Z       }
2026-06-21T11:53:56.1213417Z     },
2026-06-21T11:53:56.1213497Z     {
2026-06-21T11:53:56.1213581Z       "id": "REQ-START-3",
2026-06-21T11:53:56.1213758Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T11:53:56.1213849Z       "requiredStages": [
2026-06-21T11:53:56.1213939Z         "impl",
2026-06-21T11:53:56.1214135Z         "unit",
2026-06-21T11:53:56.1214229Z         "int"
2026-06-21T11:53:56.1214310Z       ],
2026-06-21T11:53:56.1214398Z       "stages": {
2026-06-21T11:53:56.1214568Z         "doc": {
2026-06-21T11:53:56.1214664Z           "complete": false,
2026-06-21T11:53:56.1214755Z           "evidence": []
2026-06-21T11:53:56.1214836Z         },
2026-06-21T11:53:56.1214926Z         "impl": {
2026-06-21T11:53:56.1215023Z           "complete": true,
2026-06-21T11:53:56.1215112Z           "evidence": [
2026-06-21T11:53:56.1215198Z             {
2026-06-21T11:53:56.1215318Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:56.1215398Z               "line": 23
2026-06-21T11:53:56.1215484Z             },
2026-06-21T11:53:56.1215570Z             {
2026-06-21T11:53:56.1215690Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:56.1215774Z               "line": 205
2026-06-21T11:53:56.1215856Z             },
2026-06-21T11:53:56.1215933Z             {
2026-06-21T11:53:56.1216061Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:56.1216146Z               "line": 221
2026-06-21T11:53:56.1216236Z             },
2026-06-21T11:53:56.1216318Z             {
2026-06-21T11:53:56.1216432Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1216522Z               "line": 17
2026-06-21T11:53:56.1216599Z             },
2026-06-21T11:53:56.1216685Z             {
2026-06-21T11:53:56.1216799Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1216885Z               "line": 35
2026-06-21T11:53:56.1216966Z             },
2026-06-21T11:53:56.1217047Z             {
2026-06-21T11:53:56.1217156Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1217243Z               "line": 116
2026-06-21T11:53:56.1217329Z             }
2026-06-21T11:53:56.1217410Z           ]
2026-06-21T11:53:56.1217490Z         },
2026-06-21T11:53:56.1217577Z         "int": {
2026-06-21T11:53:56.1217672Z           "complete": true,
2026-06-21T11:53:56.1217757Z           "evidence": [
2026-06-21T11:53:56.1217839Z             {
2026-06-21T11:53:56.1217958Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T11:53:56.1218048Z               "line": 488
2026-06-21T11:53:56.1218129Z             }
2026-06-21T11:53:56.1218207Z           ]
2026-06-21T11:53:56.1218287Z         },
2026-06-21T11:53:56.1218367Z         "unit": {
2026-06-21T11:53:56.1218448Z           "complete": true,
2026-06-21T11:53:56.1218548Z           "evidence": [
2026-06-21T11:53:56.1218633Z             {
2026-06-21T11:53:56.1218736Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:56.1218817Z               "line": 381
2026-06-21T11:53:56.1218899Z             },
2026-06-21T11:53:56.1219055Z             {
2026-06-21T11:53:56.1219171Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:56.1219271Z               "line": 402
2026-06-21T11:53:56.1219365Z             },
2026-06-21T11:53:56.1219451Z             {
2026-06-21T11:53:56.1219571Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T11:53:56.1219656Z               "line": 412
2026-06-21T11:53:56.1219742Z             },
2026-06-21T11:53:56.1219819Z             {
2026-06-21T11:53:56.1219933Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1220019Z               "line": 591
2026-06-21T11:53:56.1220100Z             },
2026-06-21T11:53:56.1220182Z             {
2026-06-21T11:53:56.1220291Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1220371Z               "line": 624
2026-06-21T11:53:56.1220445Z             },
2026-06-21T11:53:56.1220539Z             {
2026-06-21T11:53:56.1220653Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1220740Z               "line": 657
2026-06-21T11:53:56.1220826Z             }
2026-06-21T11:53:56.1220906Z           ]
2026-06-21T11:53:56.1220991Z         }
2026-06-21T11:53:56.1221074Z       }
2026-06-21T11:53:56.1221160Z     },
2026-06-21T11:53:56.1221324Z     {
2026-06-21T11:53:56.1221420Z       "id": "REQ-START-4",
2026-06-21T11:53:56.1221561Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T11:53:56.1221732Z       "requiredStages": [
2026-06-21T11:53:56.1221809Z         "impl",
2026-06-21T11:53:56.1221894Z         "unit"
2026-06-21T11:53:56.1221975Z       ],
2026-06-21T11:53:56.1222057Z       "stages": {
2026-06-21T11:53:56.1222142Z         "doc": {
2026-06-21T11:53:56.1222237Z           "complete": false,
2026-06-21T11:53:56.1222318Z           "evidence": []
2026-06-21T11:53:56.1222401Z         },
2026-06-21T11:53:56.1222481Z         "impl": {
2026-06-21T11:53:56.1222575Z           "complete": true,
2026-06-21T11:53:56.1222662Z           "evidence": [
2026-06-21T11:53:56.1222739Z             {
2026-06-21T11:53:56.1222858Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1222943Z               "line": 585
2026-06-21T11:53:56.1223025Z             }
2026-06-21T11:53:56.1223106Z           ]
2026-06-21T11:53:56.1223191Z         },
2026-06-21T11:53:56.1223277Z         "int": {
2026-06-21T11:53:56.1223369Z           "complete": false,
2026-06-21T11:53:56.1223462Z           "evidence": []
2026-06-21T11:53:56.1223544Z         },
2026-06-21T11:53:56.1223627Z         "unit": {
2026-06-21T11:53:56.1223707Z           "complete": true,
2026-06-21T11:53:56.1223791Z           "evidence": [
2026-06-21T11:53:56.1223877Z             {
2026-06-21T11:53:56.1223986Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1224076Z               "line": 1026
2026-06-21T11:53:56.1224156Z             }
2026-06-21T11:53:56.1224231Z           ]
2026-06-21T11:53:56.1224313Z         }
2026-06-21T11:53:56.1224400Z       }
2026-06-21T11:53:56.1224484Z     },
2026-06-21T11:53:56.1224566Z     {
2026-06-21T11:53:56.1224653Z       "id": "REQ-START-5",
2026-06-21T11:53:56.1227464Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T11:53:56.1227579Z       "requiredStages": [
2026-06-21T11:53:56.1227650Z         "doc",
2026-06-21T11:53:56.1227726Z         "impl",
2026-06-21T11:53:56.1227803Z         "unit",
2026-06-21T11:53:56.1227889Z         "int"
2026-06-21T11:53:56.1227974Z       ],
2026-06-21T11:53:56.1228059Z       "stages": {
2026-06-21T11:53:56.1228147Z         "doc": {
2026-06-21T11:53:56.1228241Z           "complete": true,
2026-06-21T11:53:56.1228327Z           "evidence": [
2026-06-21T11:53:56.1228409Z             {
2026-06-21T11:53:56.1228513Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1228594Z               "line": 176
2026-06-21T11:53:56.1228680Z             },
2026-06-21T11:53:56.1228762Z             {
2026-06-21T11:53:56.1228899Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T11:53:56.1229070Z               "line": 28
2026-06-21T11:53:56.1229146Z             }
2026-06-21T11:53:56.1229225Z           ]
2026-06-21T11:53:56.1229301Z         },
2026-06-21T11:53:56.1229392Z         "impl": {
2026-06-21T11:53:56.1229474Z           "complete": true,
2026-06-21T11:53:56.1229554Z           "evidence": [
2026-06-21T11:53:56.1229639Z             {
2026-06-21T11:53:56.1229850Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.1229949Z               "line": 26
2026-06-21T11:53:56.1230108Z             },
2026-06-21T11:53:56.1230188Z             {
2026-06-21T11:53:56.1230307Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.1230394Z               "line": 212
2026-06-21T11:53:56.1230470Z             },
2026-06-21T11:53:56.1230555Z             {
2026-06-21T11:53:56.1230675Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.1230765Z               "line": 221
2026-06-21T11:53:56.1230846Z             },
2026-06-21T11:53:56.1230927Z             {
2026-06-21T11:53:56.1231038Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.1231123Z               "line": 485
2026-06-21T11:53:56.1231204Z             },
2026-06-21T11:53:56.1231290Z             {
2026-06-21T11:53:56.1231391Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1231484Z               "line": 36
2026-06-21T11:53:56.1231561Z             },
2026-06-21T11:53:56.1231649Z             {
2026-06-21T11:53:56.1231752Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1231856Z               "line": 118
2026-06-21T11:53:56.1231937Z             },
2026-06-21T11:53:56.1232023Z             {
2026-06-21T11:53:56.1232121Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T11:53:56.1232211Z               "line": 329
2026-06-21T11:53:56.1232288Z             }
2026-06-21T11:53:56.1232364Z           ]
2026-06-21T11:53:56.1232450Z         },
2026-06-21T11:53:56.1232530Z         "int": {
2026-06-21T11:53:56.1232627Z           "complete": true,
2026-06-21T11:53:56.1232722Z           "evidence": [
2026-06-21T11:53:56.1232798Z             {
2026-06-21T11:53:56.1232927Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T11:53:56.1233008Z               "line": 17
2026-06-21T11:53:56.1233094Z             }
2026-06-21T11:53:56.1233179Z           ]
2026-06-21T11:53:56.1233266Z         },
2026-06-21T11:53:56.1233351Z         "unit": {
2026-06-21T11:53:56.1233437Z           "complete": true,
2026-06-21T11:53:56.1233522Z           "evidence": [
2026-06-21T11:53:56.1233600Z             {
2026-06-21T11:53:56.1233712Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.1233809Z               "line": 358
2026-06-21T11:53:56.1233881Z             },
2026-06-21T11:53:56.1233967Z             {
2026-06-21T11:53:56.1234085Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T11:53:56.1234172Z               "line": 371
2026-06-21T11:53:56.1234253Z             },
2026-06-21T11:53:56.1234342Z             {
2026-06-21T11:53:56.1234451Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T11:53:56.1234527Z               "line": 597
2026-06-21T11:53:56.1234613Z             }
2026-06-21T11:53:56.1234697Z           ]
2026-06-21T11:53:56.1234778Z         }
2026-06-21T11:53:56.1234859Z       }
2026-06-21T11:53:56.1234931Z     },
2026-06-21T11:53:56.1235021Z     {
2026-06-21T11:53:56.1235106Z       "id": "REQ-STORE-1",
2026-06-21T11:53:56.1235980Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T11:53:56.1236074Z       "requiredStages": [
2026-06-21T11:53:56.1236157Z         "impl",
2026-06-21T11:53:56.1236246Z         "unit"
2026-06-21T11:53:56.1236327Z       ],
2026-06-21T11:53:56.1236419Z       "stages": {
2026-06-21T11:53:56.1236505Z         "doc": {
2026-06-21T11:53:56.1236604Z           "complete": false,
2026-06-21T11:53:56.1236704Z           "evidence": []
2026-06-21T11:53:56.1236787Z         },
2026-06-21T11:53:56.1236876Z         "impl": {
2026-06-21T11:53:56.1236957Z           "complete": true,
2026-06-21T11:53:56.1237054Z           "evidence": [
2026-06-21T11:53:56.1237214Z             {
2026-06-21T11:53:56.1237346Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1237510Z               "line": 23
2026-06-21T11:53:56.1237595Z             },
2026-06-21T11:53:56.1237676Z             {
2026-06-21T11:53:56.1237796Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1237881Z               "line": 46
2026-06-21T11:53:56.1237967Z             },
2026-06-21T11:53:56.1238054Z             {
2026-06-21T11:53:56.1238168Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1238253Z               "line": 97
2026-06-21T11:53:56.1238339Z             },
2026-06-21T11:53:56.1238425Z             {
2026-06-21T11:53:56.1238548Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1238624Z               "line": 125
2026-06-21T11:53:56.1238712Z             },
2026-06-21T11:53:56.1238796Z             {
2026-06-21T11:53:56.1238911Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1239069Z               "line": 207
2026-06-21T11:53:56.1239144Z             },
2026-06-21T11:53:56.1239240Z             {
2026-06-21T11:53:56.1239351Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1239449Z               "line": 231
2026-06-21T11:53:56.1239530Z             },
2026-06-21T11:53:56.1239611Z             {
2026-06-21T11:53:56.1239729Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1239809Z               "line": 467
2026-06-21T11:53:56.1239894Z             },
2026-06-21T11:53:56.1239971Z             {
2026-06-21T11:53:56.1240096Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1240194Z               "line": 25
2026-06-21T11:53:56.1240276Z             },
2026-06-21T11:53:56.1240363Z             {
2026-06-21T11:53:56.1240481Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1240567Z               "line": 120
2026-06-21T11:53:56.1240653Z             },
2026-06-21T11:53:56.1240725Z             {
2026-06-21T11:53:56.1240852Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1240945Z               "line": 148
2026-06-21T11:53:56.1241035Z             },
2026-06-21T11:53:56.1241115Z             {
2026-06-21T11:53:56.1241235Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1241325Z               "line": 165
2026-06-21T11:53:56.1241406Z             },
2026-06-21T11:53:56.1241491Z             {
2026-06-21T11:53:56.1241612Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1241697Z               "line": 180
2026-06-21T11:53:56.1241778Z             },
2026-06-21T11:53:56.1241865Z             {
2026-06-21T11:53:56.1241988Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1242079Z               "line": 198
2026-06-21T11:53:56.1242161Z             },
2026-06-21T11:53:56.1242246Z             {
2026-06-21T11:53:56.1242374Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1242454Z               "line": 207
2026-06-21T11:53:56.1242545Z             },
2026-06-21T11:53:56.1242629Z             {
2026-06-21T11:53:56.1242747Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T11:53:56.1242829Z               "line": 16
2026-06-21T11:53:56.1242911Z             },
2026-06-21T11:53:56.1242991Z             {
2026-06-21T11:53:56.1243105Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T11:53:56.1243187Z               "line": 63
2026-06-21T11:53:56.1243268Z             }
2026-06-21T11:53:56.1243343Z           ]
2026-06-21T11:53:56.1243429Z         },
2026-06-21T11:53:56.1243511Z         "int": {
2026-06-21T11:53:56.1243601Z           "complete": false,
2026-06-21T11:53:56.1243696Z           "evidence": []
2026-06-21T11:53:56.1243777Z         },
2026-06-21T11:53:56.1243869Z         "unit": {
2026-06-21T11:53:56.1243949Z           "complete": true,
2026-06-21T11:53:56.1244145Z           "evidence": [
2026-06-21T11:53:56.1244226Z             {
2026-06-21T11:53:56.1244354Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1244518Z               "line": 584
2026-06-21T11:53:56.1244602Z             },
2026-06-21T11:53:56.1244688Z             {
2026-06-21T11:53:56.1244809Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1244898Z               "line": 594
2026-06-21T11:53:56.1244983Z             },
2026-06-21T11:53:56.1245069Z             {
2026-06-21T11:53:56.1245178Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1245271Z               "line": 616
2026-06-21T11:53:56.1245352Z             },
2026-06-21T11:53:56.1245438Z             {
2026-06-21T11:53:56.1245549Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1245628Z               "line": 632
2026-06-21T11:53:56.1245710Z             },
2026-06-21T11:53:56.1245787Z             {
2026-06-21T11:53:56.1245915Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T11:53:56.1246010Z               "line": 690
2026-06-21T11:53:56.1246097Z             },
2026-06-21T11:53:56.1246183Z             {
2026-06-21T11:53:56.1246306Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1246397Z               "line": 472
2026-06-21T11:53:56.1246482Z             },
2026-06-21T11:53:56.1246554Z             {
2026-06-21T11:53:56.1246669Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T11:53:56.1246755Z               "line": 507
2026-06-21T11:53:56.1246841Z             },
2026-06-21T11:53:56.1246921Z             {
2026-06-21T11:53:56.1247037Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T11:53:56.1247130Z               "line": 120
2026-06-21T11:53:56.1247202Z             },
2026-06-21T11:53:56.1247284Z             {
2026-06-21T11:53:56.1247394Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T11:53:56.1247483Z               "line": 128
2026-06-21T11:53:56.1247565Z             }
2026-06-21T11:53:56.1247652Z           ]
2026-06-21T11:53:56.1247742Z         }
2026-06-21T11:53:56.1247821Z       }
2026-06-21T11:53:56.1247911Z     },
2026-06-21T11:53:56.1247988Z     {
2026-06-21T11:53:56.1248089Z       "id": "REQ-SUBNET-1",
2026-06-21T11:53:56.1248409Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T11:53:56.1248508Z       "requiredStages": [
2026-06-21T11:53:56.1248589Z         "impl",
2026-06-21T11:53:56.1248671Z         "unit"
2026-06-21T11:53:56.1248756Z       ],
2026-06-21T11:53:56.1248841Z       "stages": {
2026-06-21T11:53:56.1248928Z         "doc": {
2026-06-21T11:53:56.1249118Z           "complete": false,
2026-06-21T11:53:56.1249199Z           "evidence": []
2026-06-21T11:53:56.1249291Z         },
2026-06-21T11:53:56.1249385Z         "impl": {
2026-06-21T11:53:56.1249476Z           "complete": true,
2026-06-21T11:53:56.1249558Z           "evidence": [
2026-06-21T11:53:56.1249643Z             {
2026-06-21T11:53:56.1249766Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1249863Z               "line": 281
2026-06-21T11:53:56.1249940Z             },
2026-06-21T11:53:56.1250019Z             {
2026-06-21T11:53:56.1250151Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1250238Z               "line": 651
2026-06-21T11:53:56.1250322Z             },
2026-06-21T11:53:56.1250403Z             {
2026-06-21T11:53:56.1250507Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1250603Z               "line": 3399
2026-06-21T11:53:56.1250679Z             },
2026-06-21T11:53:56.1250759Z             {
2026-06-21T11:53:56.1250860Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1250942Z               "line": 3709
2026-06-21T11:53:56.1251027Z             },
2026-06-21T11:53:56.1251112Z             {
2026-06-21T11:53:56.1251336Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1251422Z               "line": 3728
2026-06-21T11:53:56.1251604Z             },
2026-06-21T11:53:56.1251685Z             {
2026-06-21T11:53:56.1251790Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1251876Z               "line": 3792
2026-06-21T11:53:56.1251962Z             },
2026-06-21T11:53:56.1252047Z             {
2026-06-21T11:53:56.1252144Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1252228Z               "line": 3834
2026-06-21T11:53:56.1252310Z             },
2026-06-21T11:53:56.1252391Z             {
2026-06-21T11:53:56.1252487Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1252581Z               "line": 4023
2026-06-21T11:53:56.1252663Z             },
2026-06-21T11:53:56.1252749Z             {
2026-06-21T11:53:56.1252844Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1252929Z               "line": 4093
2026-06-21T11:53:56.1253014Z             },
2026-06-21T11:53:56.1253096Z             {
2026-06-21T11:53:56.1253199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1253293Z               "line": 4317
2026-06-21T11:53:56.1253379Z             },
2026-06-21T11:53:56.1253451Z             {
2026-06-21T11:53:56.1253551Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1253645Z               "line": 4961
2026-06-21T11:53:56.1253738Z             },
2026-06-21T11:53:56.1253814Z             {
2026-06-21T11:53:56.1253923Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.1254009Z               "line": 418
2026-06-21T11:53:56.1254090Z             }
2026-06-21T11:53:56.1254171Z           ]
2026-06-21T11:53:56.1254256Z         },
2026-06-21T11:53:56.1254342Z         "int": {
2026-06-21T11:53:56.1254429Z           "complete": false,
2026-06-21T11:53:56.1254524Z           "evidence": []
2026-06-21T11:53:56.1254609Z         },
2026-06-21T11:53:56.1254692Z         "unit": {
2026-06-21T11:53:56.1254777Z           "complete": true,
2026-06-21T11:53:56.1254867Z           "evidence": [
2026-06-21T11:53:56.1254958Z             {
2026-06-21T11:53:56.1255087Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1255171Z               "line": 1584
2026-06-21T11:53:56.1255248Z             },
2026-06-21T11:53:56.1255336Z             {
2026-06-21T11:53:56.1255435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1255524Z               "line": 9964
2026-06-21T11:53:56.1255604Z             },
2026-06-21T11:53:56.1255690Z             {
2026-06-21T11:53:56.1255794Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1255879Z               "line": 10134
2026-06-21T11:53:56.1255960Z             },
2026-06-21T11:53:56.1256042Z             {
2026-06-21T11:53:56.1256151Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1256241Z               "line": 10141
2026-06-21T11:53:56.1256328Z             },
2026-06-21T11:53:56.1256409Z             {
2026-06-21T11:53:56.1256508Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1256600Z               "line": 10194
2026-06-21T11:53:56.1256690Z             },
2026-06-21T11:53:56.1256776Z             {
2026-06-21T11:53:56.1256880Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1256967Z               "line": 10211
2026-06-21T11:53:56.1257056Z             },
2026-06-21T11:53:56.1257137Z             {
2026-06-21T11:53:56.1257239Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1257329Z               "line": 10241
2026-06-21T11:53:56.1257410Z             },
2026-06-21T11:53:56.1257491Z             {
2026-06-21T11:53:56.1257587Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1257672Z               "line": 10357
2026-06-21T11:53:56.1257753Z             },
2026-06-21T11:53:56.1257830Z             {
2026-06-21T11:53:56.1257926Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1258015Z               "line": 10508
2026-06-21T11:53:56.1258179Z             }
2026-06-21T11:53:56.1258260Z           ]
2026-06-21T11:53:56.1258344Z         }
2026-06-21T11:53:56.1258429Z       }
2026-06-21T11:53:56.1258563Z     },
2026-06-21T11:53:56.1258636Z     {
2026-06-21T11:53:56.1258719Z       "id": "REQ-SUBNET-2",
2026-06-21T11:53:56.1259025Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T11:53:56.1259120Z       "requiredStages": [
2026-06-21T11:53:56.1259203Z         "impl",
2026-06-21T11:53:56.1259293Z         "unit",
2026-06-21T11:53:56.1259373Z         "int"
2026-06-21T11:53:56.1259454Z       ],
2026-06-21T11:53:56.1259541Z       "stages": {
2026-06-21T11:53:56.1259621Z         "doc": {
2026-06-21T11:53:56.1259716Z           "complete": true,
2026-06-21T11:53:56.1259803Z           "evidence": [
2026-06-21T11:53:56.1259889Z             {
2026-06-21T11:53:56.1260050Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T11:53:56.1260128Z               "line": 60
2026-06-21T11:53:56.1260213Z             }
2026-06-21T11:53:56.1260298Z           ]
2026-06-21T11:53:56.1260384Z         },
2026-06-21T11:53:56.1260467Z         "impl": {
2026-06-21T11:53:56.1260551Z           "complete": true,
2026-06-21T11:53:56.1260641Z           "evidence": [
2026-06-21T11:53:56.1260707Z             {
2026-06-21T11:53:56.1260831Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.1260929Z               "line": 926
2026-06-21T11:53:56.1261014Z             },
2026-06-21T11:53:56.1261096Z             {
2026-06-21T11:53:56.1261211Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.1261310Z               "line": 2199
2026-06-21T11:53:56.1261392Z             },
2026-06-21T11:53:56.1261468Z             {
2026-06-21T11:53:56.1261591Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1261677Z               "line": 683
2026-06-21T11:53:56.1261760Z             },
2026-06-21T11:53:56.1261840Z             {
2026-06-21T11:53:56.1261964Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T11:53:56.1262051Z               "line": 867
2026-06-21T11:53:56.1262140Z             },
2026-06-21T11:53:56.1262231Z             {
2026-06-21T11:53:56.1262350Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1262431Z               "line": 26
2026-06-21T11:53:56.1262517Z             },
2026-06-21T11:53:56.1262607Z             {
2026-06-21T11:53:56.1262723Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1262812Z               "line": 60
2026-06-21T11:53:56.1262893Z             },
2026-06-21T11:53:56.1262980Z             {
2026-06-21T11:53:56.1265623Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1265736Z               "line": 168
2026-06-21T11:53:56.1265828Z             },
2026-06-21T11:53:56.1265915Z             {
2026-06-21T11:53:56.1266056Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1266150Z               "line": 295
2026-06-21T11:53:56.1266241Z             },
2026-06-21T11:53:56.1266326Z             {
2026-06-21T11:53:56.1266463Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1266549Z               "line": 417
2026-06-21T11:53:56.1266631Z             },
2026-06-21T11:53:56.1266716Z             {
2026-06-21T11:53:56.1266850Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T11:53:56.1266940Z               "line": 252
2026-06-21T11:53:56.1267021Z             },
2026-06-21T11:53:56.1267102Z             {
2026-06-21T11:53:56.1267212Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1267303Z               "line": 3755
2026-06-21T11:53:56.1267387Z             },
2026-06-21T11:53:56.1267475Z             {
2026-06-21T11:53:56.1267575Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1267660Z               "line": 4256
2026-06-21T11:53:56.1267741Z             },
2026-06-21T11:53:56.1267828Z             {
2026-06-21T11:53:56.1268080Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1268166Z               "line": 4892
2026-06-21T11:53:56.1268351Z             }
2026-06-21T11:53:56.1268434Z           ]
2026-06-21T11:53:56.1268514Z         },
2026-06-21T11:53:56.1268599Z         "int": {
2026-06-21T11:53:56.1268695Z           "complete": true,
2026-06-21T11:53:56.1268772Z           "evidence": [
2026-06-21T11:53:56.1268857Z             {
2026-06-21T11:53:56.1269065Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T11:53:56.1269157Z               "line": 22
2026-06-21T11:53:56.1269238Z             },
2026-06-21T11:53:56.1269327Z             {
2026-06-21T11:53:56.1269462Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1269557Z               "line": 645
2026-06-21T11:53:56.1269632Z             },
2026-06-21T11:53:56.1269715Z             {
2026-06-21T11:53:56.1269828Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1269909Z               "line": 887
2026-06-21T11:53:56.1269995Z             }
2026-06-21T11:53:56.1270072Z           ]
2026-06-21T11:53:56.1270167Z         },
2026-06-21T11:53:56.1270248Z         "unit": {
2026-06-21T11:53:56.1270334Z           "complete": true,
2026-06-21T11:53:56.1270425Z           "evidence": [
2026-06-21T11:53:56.1270510Z             {
2026-06-21T11:53:56.1270625Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1270707Z               "line": 586
2026-06-21T11:53:56.1270792Z             },
2026-06-21T11:53:56.1270873Z             {
2026-06-21T11:53:56.1270973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1271060Z               "line": 10004
2026-06-21T11:53:56.1271144Z             },
2026-06-21T11:53:56.1271229Z             {
2026-06-21T11:53:56.1271329Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1271424Z               "line": 10715
2026-06-21T11:53:56.1271499Z             }
2026-06-21T11:53:56.1271579Z           ]
2026-06-21T11:53:56.1271661Z         }
2026-06-21T11:53:56.1271743Z       }
2026-06-21T11:53:56.1271823Z     },
2026-06-21T11:53:56.1271903Z     {
2026-06-21T11:53:56.1271995Z       "id": "REQ-SUBNET-3",
2026-06-21T11:53:56.1272272Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T11:53:56.1272362Z       "requiredStages": [
2026-06-21T11:53:56.1272443Z         "impl",
2026-06-21T11:53:56.1272524Z         "unit"
2026-06-21T11:53:56.1272606Z       ],
2026-06-21T11:53:56.1272691Z       "stages": {
2026-06-21T11:53:56.1272776Z         "doc": {
2026-06-21T11:53:56.1272872Z           "complete": false,
2026-06-21T11:53:56.1272964Z           "evidence": []
2026-06-21T11:53:56.1273043Z         },
2026-06-21T11:53:56.1273129Z         "impl": {
2026-06-21T11:53:56.1273216Z           "complete": true,
2026-06-21T11:53:56.1273298Z           "evidence": [
2026-06-21T11:53:56.1273382Z             {
2026-06-21T11:53:56.1273516Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1273612Z               "line": 152
2026-06-21T11:53:56.1273691Z             },
2026-06-21T11:53:56.1273778Z             {
2026-06-21T11:53:56.1273903Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1273983Z               "line": 299
2026-06-21T11:53:56.1274068Z             },
2026-06-21T11:53:56.1274148Z             {
2026-06-21T11:53:56.1274273Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1274356Z               "line": 443
2026-06-21T11:53:56.1274437Z             },
2026-06-21T11:53:56.1274518Z             {
2026-06-21T11:53:56.1274638Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1274728Z               "line": 532
2026-06-21T11:53:56.1274809Z             },
2026-06-21T11:53:56.1274896Z             {
2026-06-21T11:53:56.1275009Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1275099Z               "line": 125
2026-06-21T11:53:56.1275282Z             },
2026-06-21T11:53:56.1275362Z             {
2026-06-21T11:53:56.1275472Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1275634Z               "line": 253
2026-06-21T11:53:56.1275720Z             },
2026-06-21T11:53:56.1275802Z             {
2026-06-21T11:53:56.1275920Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1276011Z               "line": 264
2026-06-21T11:53:56.1276088Z             },
2026-06-21T11:53:56.1276174Z             {
2026-06-21T11:53:56.1276287Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1276378Z               "line": 285
2026-06-21T11:53:56.1276456Z             },
2026-06-21T11:53:56.1276541Z             {
2026-06-21T11:53:56.1276653Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1276739Z               "line": 621
2026-06-21T11:53:56.1276820Z             },
2026-06-21T11:53:56.1276904Z             {
2026-06-21T11:53:56.1277023Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1277105Z               "line": 680
2026-06-21T11:53:56.1277191Z             },
2026-06-21T11:53:56.1277271Z             {
2026-06-21T11:53:56.1277390Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.1277477Z               "line": 61
2026-06-21T11:53:56.1277558Z             },
2026-06-21T11:53:56.1277637Z             {
2026-06-21T11:53:56.1277758Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.1277844Z               "line": 90
2026-06-21T11:53:56.1277934Z             },
2026-06-21T11:53:56.1278015Z             {
2026-06-21T11:53:56.1278139Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.1278225Z               "line": 125
2026-06-21T11:53:56.1278311Z             },
2026-06-21T11:53:56.1278392Z             {
2026-06-21T11:53:56.1278506Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T11:53:56.1278592Z               "line": 9
2026-06-21T11:53:56.1278679Z             },
2026-06-21T11:53:56.1278755Z             {
2026-06-21T11:53:56.1278864Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1279018Z               "line": 4093
2026-06-21T11:53:56.1279107Z             },
2026-06-21T11:53:56.1279188Z             {
2026-06-21T11:53:56.1279294Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.1279375Z               "line": 445
2026-06-21T11:53:56.1279459Z             }
2026-06-21T11:53:56.1279540Z           ]
2026-06-21T11:53:56.1279621Z         },
2026-06-21T11:53:56.1279703Z         "int": {
2026-06-21T11:53:56.1279788Z           "complete": false,
2026-06-21T11:53:56.1279878Z           "evidence": []
2026-06-21T11:53:56.1279960Z         },
2026-06-21T11:53:56.1280051Z         "unit": {
2026-06-21T11:53:56.1280145Z           "complete": true,
2026-06-21T11:53:56.1280236Z           "evidence": [
2026-06-21T11:53:56.1280313Z             {
2026-06-21T11:53:56.1280442Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1280541Z               "line": 1356
2026-06-21T11:53:56.1280628Z             },
2026-06-21T11:53:56.1280708Z             {
2026-06-21T11:53:56.1280822Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1280909Z               "line": 1713
2026-06-21T11:53:56.1280990Z             },
2026-06-21T11:53:56.1281080Z             {
2026-06-21T11:53:56.1281229Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.1281319Z               "line": 892
2026-06-21T11:53:56.1281418Z             },
2026-06-21T11:53:56.1281505Z             {
2026-06-21T11:53:56.1281620Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1281704Z               "line": 991
2026-06-21T11:53:56.1281790Z             },
2026-06-21T11:53:56.1281871Z             {
2026-06-21T11:53:56.1281980Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1282063Z               "line": 1041
2026-06-21T11:53:56.1282240Z             },
2026-06-21T11:53:56.1282318Z             {
2026-06-21T11:53:56.1282512Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1282598Z               "line": 1100
2026-06-21T11:53:56.1282688Z             },
2026-06-21T11:53:56.1282769Z             {
2026-06-21T11:53:56.1282890Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T11:53:56.1282960Z               "line": 234
2026-06-21T11:53:56.1283045Z             },
2026-06-21T11:53:56.1283132Z             {
2026-06-21T11:53:56.1283251Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T11:53:56.1283365Z               "line": 49
2026-06-21T11:53:56.1283451Z             },
2026-06-21T11:53:56.1283533Z             {
2026-06-21T11:53:56.1283643Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1283732Z               "line": 10357
2026-06-21T11:53:56.1283815Z             },
2026-06-21T11:53:56.1283895Z             {
2026-06-21T11:53:56.1284004Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1284091Z               "line": 10463
2026-06-21T11:53:56.1284177Z             },
2026-06-21T11:53:56.1284256Z             {
2026-06-21T11:53:56.1284357Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1284449Z               "line": 10681
2026-06-21T11:53:56.1284530Z             }
2026-06-21T11:53:56.1284604Z           ]
2026-06-21T11:53:56.1284680Z         }
2026-06-21T11:53:56.1284766Z       }
2026-06-21T11:53:56.1284851Z     },
2026-06-21T11:53:56.1284931Z     {
2026-06-21T11:53:56.1285016Z       "id": "REQ-SUBNET-4",
2026-06-21T11:53:56.1285298Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T11:53:56.1285398Z       "requiredStages": [
2026-06-21T11:53:56.1285480Z         "impl",
2026-06-21T11:53:56.1285565Z         "unit"
2026-06-21T11:53:56.1285646Z       ],
2026-06-21T11:53:56.1285738Z       "stages": {
2026-06-21T11:53:56.1285823Z         "doc": {
2026-06-21T11:53:56.1285903Z           "complete": true,
2026-06-21T11:53:56.1285989Z           "evidence": [
2026-06-21T11:53:56.1286076Z             {
2026-06-21T11:53:56.1286242Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T11:53:56.1286328Z               "line": 60
2026-06-21T11:53:56.1286419Z             }
2026-06-21T11:53:56.1286504Z           ]
2026-06-21T11:53:56.1286585Z         },
2026-06-21T11:53:56.1286672Z         "impl": {
2026-06-21T11:53:56.1286762Z           "complete": true,
2026-06-21T11:53:56.1286857Z           "evidence": [
2026-06-21T11:53:56.1286933Z             {
2026-06-21T11:53:56.1287040Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1287129Z               "line": 3399
2026-06-21T11:53:56.1287200Z             },
2026-06-21T11:53:56.1287285Z             {
2026-06-21T11:53:56.1287380Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1287469Z               "line": 4859
2026-06-21T11:53:56.1287554Z             },
2026-06-21T11:53:56.1287640Z             {
2026-06-21T11:53:56.1287746Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1287836Z               "line": 4892
2026-06-21T11:53:56.1287922Z             }
2026-06-21T11:53:56.1288003Z           ]
2026-06-21T11:53:56.1288080Z         },
2026-06-21T11:53:56.1288155Z         "int": {
2026-06-21T11:53:56.1288251Z           "complete": false,
2026-06-21T11:53:56.1288337Z           "evidence": []
2026-06-21T11:53:56.1288423Z         },
2026-06-21T11:53:56.1288508Z         "unit": {
2026-06-21T11:53:56.1288595Z           "complete": true,
2026-06-21T11:53:56.1288685Z           "evidence": [
2026-06-21T11:53:56.1288761Z             {
2026-06-21T11:53:56.1288861Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1289057Z               "line": 10120
2026-06-21T11:53:56.1289138Z             },
2026-06-21T11:53:56.1289224Z             {
2026-06-21T11:53:56.1289324Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1289573Z               "line": 10194
2026-06-21T11:53:56.1289653Z             }
2026-06-21T11:53:56.1289815Z           ]
2026-06-21T11:53:56.1289893Z         }
2026-06-21T11:53:56.1289977Z       }
2026-06-21T11:53:56.1290057Z     },
2026-06-21T11:53:56.1290142Z     {
2026-06-21T11:53:56.1290234Z       "id": "REQ-SUBNET-5",
2026-06-21T11:53:56.1291391Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T11:53:56.1291484Z       "requiredStages": [
2026-06-21T11:53:56.1291574Z         "impl",
2026-06-21T11:53:56.1291655Z         "unit",
2026-06-21T11:53:56.1291735Z         "int"
2026-06-21T11:53:56.1291822Z       ],
2026-06-21T11:53:56.1291908Z       "stages": {
2026-06-21T11:53:56.1291988Z         "doc": {
2026-06-21T11:53:56.1292079Z           "complete": false,
2026-06-21T11:53:56.1292161Z           "evidence": []
2026-06-21T11:53:56.1292241Z         },
2026-06-21T11:53:56.1292321Z         "impl": {
2026-06-21T11:53:56.1292406Z           "complete": true,
2026-06-21T11:53:56.1292492Z           "evidence": [
2026-06-21T11:53:56.1292577Z             {
2026-06-21T11:53:56.1292700Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T11:53:56.1292786Z               "line": 128
2026-06-21T11:53:56.1292868Z             },
2026-06-21T11:53:56.1292952Z             {
2026-06-21T11:53:56.1293067Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T11:53:56.1293154Z               "line": 413
2026-06-21T11:53:56.1293239Z             },
2026-06-21T11:53:56.1293319Z             {
2026-06-21T11:53:56.1293435Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1293515Z               "line": 74
2026-06-21T11:53:56.1293601Z             },
2026-06-21T11:53:56.1293682Z             {
2026-06-21T11:53:56.1293788Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.1293878Z               "line": 332
2026-06-21T11:53:56.1293953Z             },
2026-06-21T11:53:56.1294031Z             {
2026-06-21T11:53:56.1294136Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.1294221Z               "line": 621
2026-06-21T11:53:56.1294307Z             },
2026-06-21T11:53:56.1294389Z             {
2026-06-21T11:53:56.1294516Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T11:53:56.1294602Z               "line": 31
2026-06-21T11:53:56.1294694Z             },
2026-06-21T11:53:56.1294775Z             {
2026-06-21T11:53:56.1294884Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T11:53:56.1294971Z               "line": 50
2026-06-21T11:53:56.1295052Z             },
2026-06-21T11:53:56.1295141Z             {
2026-06-21T11:53:56.1295264Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T11:53:56.1295350Z               "line": 69
2026-06-21T11:53:56.1295435Z             },
2026-06-21T11:53:56.1295524Z             {
2026-06-21T11:53:56.1295639Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T11:53:56.1295725Z               "line": 113
2026-06-21T11:53:56.1295810Z             },
2026-06-21T11:53:56.1295877Z             {
2026-06-21T11:53:56.1296002Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T11:53:56.1296083Z               "line": 25
2026-06-21T11:53:56.1296167Z             },
2026-06-21T11:53:56.1296254Z             {
2026-06-21T11:53:56.1296373Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T11:53:56.1296463Z               "line": 34
2026-06-21T11:53:56.1296549Z             },
2026-06-21T11:53:56.1296631Z             {
2026-06-21T11:53:56.1296745Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T11:53:56.1296835Z               "line": 17
2026-06-21T11:53:56.1297003Z             },
2026-06-21T11:53:56.1297083Z             {
2026-06-21T11:53:56.1297256Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1297341Z               "line": 4817
2026-06-21T11:53:56.1297427Z             },
2026-06-21T11:53:56.1297508Z             {
2026-06-21T11:53:56.1297619Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T11:53:56.1297703Z               "line": 419
2026-06-21T11:53:56.1297783Z             }
2026-06-21T11:53:56.1297869Z           ]
2026-06-21T11:53:56.1297950Z         },
2026-06-21T11:53:56.1298034Z         "int": {
2026-06-21T11:53:56.1298114Z           "complete": true,
2026-06-21T11:53:56.1298200Z           "evidence": [
2026-06-21T11:53:56.1298282Z             {
2026-06-21T11:53:56.1298405Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.1298487Z               "line": 821
2026-06-21T11:53:56.1298564Z             }
2026-06-21T11:53:56.1298649Z           ]
2026-06-21T11:53:56.1298734Z         },
2026-06-21T11:53:56.1298816Z         "unit": {
2026-06-21T11:53:56.1298902Z           "complete": true,
2026-06-21T11:53:56.1299073Z           "evidence": [
2026-06-21T11:53:56.1299150Z             {
2026-06-21T11:53:56.1299259Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:56.1299364Z               "line": 341
2026-06-21T11:53:56.1299445Z             },
2026-06-21T11:53:56.1299532Z             {
2026-06-21T11:53:56.1299650Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T11:53:56.1299731Z               "line": 1115
2026-06-21T11:53:56.1299823Z             },
2026-06-21T11:53:56.1299903Z             {
2026-06-21T11:53:56.1300022Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T11:53:56.1300104Z               "line": 151
2026-06-21T11:53:56.1300190Z             },
2026-06-21T11:53:56.1300274Z             {
2026-06-21T11:53:56.1300390Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T11:53:56.1300486Z               "line": 61
2026-06-21T11:53:56.1300565Z             },
2026-06-21T11:53:56.1300641Z             {
2026-06-21T11:53:56.1300770Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T11:53:56.1300856Z               "line": 111
2026-06-21T11:53:56.1300942Z             },
2026-06-21T11:53:56.1301022Z             {
2026-06-21T11:53:56.1301147Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T11:53:56.1301233Z               "line": 138
2026-06-21T11:53:56.1301313Z             },
2026-06-21T11:53:56.1301400Z             {
2026-06-21T11:53:56.1301509Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T11:53:56.1301594Z               "line": 148
2026-06-21T11:53:56.1301676Z             },
2026-06-21T11:53:56.1301753Z             {
2026-06-21T11:53:56.1301852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1301947Z               "line": 10021
2026-06-21T11:53:56.1302024Z             }
2026-06-21T11:53:56.1302110Z           ]
2026-06-21T11:53:56.1302200Z         }
2026-06-21T11:53:56.1302281Z       }
2026-06-21T11:53:56.1302373Z     },
2026-06-21T11:53:56.1302454Z     {
2026-06-21T11:53:56.1302548Z       "id": "REQ-SUBNET-6",
2026-06-21T11:53:56.1303245Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T11:53:56.1303337Z       "requiredStages": [
2026-06-21T11:53:56.1303418Z         "impl",
2026-06-21T11:53:56.1303499Z         "unit"
2026-06-21T11:53:56.1303579Z       ],
2026-06-21T11:53:56.1303670Z       "stages": {
2026-06-21T11:53:56.1303751Z         "doc": {
2026-06-21T11:53:56.1303851Z           "complete": false,
2026-06-21T11:53:56.1303932Z           "evidence": []
2026-06-21T11:53:56.1304010Z         },
2026-06-21T11:53:56.1304095Z         "impl": {
2026-06-21T11:53:56.1304286Z           "complete": true,
2026-06-21T11:53:56.1304372Z           "evidence": [
2026-06-21T11:53:56.1304452Z             {
2026-06-21T11:53:56.1304668Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1304758Z               "line": 254
2026-06-21T11:53:56.1304848Z             },
2026-06-21T11:53:56.1304930Z             {
2026-06-21T11:53:56.1305039Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1305129Z               "line": 4475
2026-06-21T11:53:56.1305206Z             },
2026-06-21T11:53:56.1305292Z             {
2026-06-21T11:53:56.1305396Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1305482Z               "line": 4492
2026-06-21T11:53:56.1305565Z             },
2026-06-21T11:53:56.1305650Z             {
2026-06-21T11:53:56.1305748Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1305833Z               "line": 4545
2026-06-21T11:53:56.1305924Z             },
2026-06-21T11:53:56.1306009Z             {
2026-06-21T11:53:56.1306117Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1306204Z               "line": 4568
2026-06-21T11:53:56.1306295Z             }
2026-06-21T11:53:56.1306384Z           ]
2026-06-21T11:53:56.1306461Z         },
2026-06-21T11:53:56.1306538Z         "int": {
2026-06-21T11:53:56.1306623Z           "complete": false,
2026-06-21T11:53:56.1306718Z           "evidence": []
2026-06-21T11:53:56.1306804Z         },
2026-06-21T11:53:56.1306886Z         "unit": {
2026-06-21T11:53:56.1306967Z           "complete": true,
2026-06-21T11:53:56.1307056Z           "evidence": [
2026-06-21T11:53:56.1307138Z             {
2026-06-21T11:53:56.1307225Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1307310Z               "line": 10035
2026-06-21T11:53:56.1307395Z             },
2026-06-21T11:53:56.1307478Z             {
2026-06-21T11:53:56.1307577Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1307663Z               "line": 10068
2026-06-21T11:53:56.1307753Z             },
2026-06-21T11:53:56.1307826Z             {
2026-06-21T11:53:56.1307929Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1308020Z               "line": 10077
2026-06-21T11:53:56.1308098Z             }
2026-06-21T11:53:56.1308188Z           ]
2026-06-21T11:53:56.1308267Z         }
2026-06-21T11:53:56.1308358Z       }
2026-06-21T11:53:56.1308434Z     },
2026-06-21T11:53:56.1308510Z     {
2026-06-21T11:53:56.1308603Z       "id": "REQ-SUBNET-7",
2026-06-21T11:53:56.1310320Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T11:53:56.1310435Z       "requiredStages": [
2026-06-21T11:53:56.1310515Z         "impl",
2026-06-21T11:53:56.1310606Z         "unit"
2026-06-21T11:53:56.1310693Z       ],
2026-06-21T11:53:56.1310782Z       "stages": {
2026-06-21T11:53:56.1310863Z         "doc": {
2026-06-21T11:53:56.1310945Z           "complete": false,
2026-06-21T11:53:56.1311037Z           "evidence": []
2026-06-21T11:53:56.1311121Z         },
2026-06-21T11:53:56.1311211Z         "impl": {
2026-06-21T11:53:56.1311296Z           "complete": true,
2026-06-21T11:53:56.1311388Z           "evidence": [
2026-06-21T11:53:56.1311468Z             {
2026-06-21T11:53:56.1311592Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T11:53:56.1311683Z               "line": 17
2026-06-21T11:53:56.1311760Z             },
2026-06-21T11:53:56.1311845Z             {
2026-06-21T11:53:56.1311955Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1312045Z               "line": 103
2026-06-21T11:53:56.1312216Z             },
2026-06-21T11:53:56.1312299Z             {
2026-06-21T11:53:56.1312507Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T11:53:56.1312589Z               "line": 312
2026-06-21T11:53:56.1312670Z             },
2026-06-21T11:53:56.1312755Z             {
2026-06-21T11:53:56.1312880Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T11:53:56.1312966Z               "line": 131
2026-06-21T11:53:56.1313046Z             },
2026-06-21T11:53:56.1313132Z             {
2026-06-21T11:53:56.1313253Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1313338Z               "line": 160
2026-06-21T11:53:56.1313422Z             },
2026-06-21T11:53:56.1313503Z             {
2026-06-21T11:53:56.1313622Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1313706Z               "line": 447
2026-06-21T11:53:56.1313791Z             },
2026-06-21T11:53:56.1313868Z             {
2026-06-21T11:53:56.1313993Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1314092Z               "line": 670
2026-06-21T11:53:56.1314168Z             },
2026-06-21T11:53:56.1314250Z             {
2026-06-21T11:53:56.1314364Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1314449Z               "line": 710
2026-06-21T11:53:56.1314536Z             },
2026-06-21T11:53:56.1314617Z             {
2026-06-21T11:53:56.1314745Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1314827Z               "line": 766
2026-06-21T11:53:56.1314913Z             },
2026-06-21T11:53:56.1314989Z             {
2026-06-21T11:53:56.1315117Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.1315204Z               "line": 136
2026-06-21T11:53:56.1315280Z             },
2026-06-21T11:53:56.1315370Z             {
2026-06-21T11:53:56.1315476Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1315575Z               "line": 139
2026-06-21T11:53:56.1315656Z             }
2026-06-21T11:53:56.1315742Z           ]
2026-06-21T11:53:56.1315815Z         },
2026-06-21T11:53:56.1315900Z         "int": {
2026-06-21T11:53:56.1316000Z           "complete": false,
2026-06-21T11:53:56.1316081Z           "evidence": []
2026-06-21T11:53:56.1316172Z         },
2026-06-21T11:53:56.1316257Z         "unit": {
2026-06-21T11:53:56.1316346Z           "complete": true,
2026-06-21T11:53:56.1316437Z           "evidence": [
2026-06-21T11:53:56.1316527Z             {
2026-06-21T11:53:56.1316649Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T11:53:56.1316735Z               "line": 136
2026-06-21T11:53:56.1316817Z             },
2026-06-21T11:53:56.1316898Z             {
2026-06-21T11:53:56.1317021Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T11:53:56.1317113Z               "line": 156
2026-06-21T11:53:56.1317203Z             },
2026-06-21T11:53:56.1317292Z             {
2026-06-21T11:53:56.1317418Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1317517Z               "line": 987
2026-06-21T11:53:56.1317603Z             },
2026-06-21T11:53:56.1317689Z             {
2026-06-21T11:53:56.1317818Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T11:53:56.1317904Z               "line": 1009
2026-06-21T11:53:56.1317989Z             },
2026-06-21T11:53:56.1318071Z             {
2026-06-21T11:53:56.1318198Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T11:53:56.1318290Z               "line": 1419
2026-06-21T11:53:56.1318376Z             },
2026-06-21T11:53:56.1318462Z             {
2026-06-21T11:53:56.1318580Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T11:53:56.1318672Z               "line": 1036
2026-06-21T11:53:56.1318753Z             }
2026-06-21T11:53:56.1318847Z           ]
2026-06-21T11:53:56.1318932Z         }
2026-06-21T11:53:56.1319192Z       }
2026-06-21T11:53:56.1319282Z     },
2026-06-21T11:53:56.1319359Z     {
2026-06-21T11:53:56.1319460Z       "id": "REQ-SUBNET-8",
2026-06-21T11:53:56.1320653Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T11:53:56.1320747Z       "requiredStages": [
2026-06-21T11:53:56.1320837Z         "impl",
2026-06-21T11:53:56.1320914Z         "unit"
2026-06-21T11:53:56.1321000Z       ],
2026-06-21T11:53:56.1321080Z       "stages": {
2026-06-21T11:53:56.1321166Z         "doc": {
2026-06-21T11:53:56.1321248Z           "complete": false,
2026-06-21T11:53:56.1321343Z           "evidence": []
2026-06-21T11:53:56.1321419Z         },
2026-06-21T11:53:56.1321500Z         "impl": {
2026-06-21T11:53:56.1321602Z           "complete": true,
2026-06-21T11:53:56.1321685Z           "evidence": [
2026-06-21T11:53:56.1321776Z             {
2026-06-21T11:53:56.1321885Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1321977Z               "line": 3835
2026-06-21T11:53:56.1322066Z             },
2026-06-21T11:53:56.1322142Z             {
2026-06-21T11:53:56.1322244Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1322334Z               "line": 3864
2026-06-21T11:53:56.1322414Z             },
2026-06-21T11:53:56.1322496Z             {
2026-06-21T11:53:56.1322596Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1322682Z               "line": 3881
2026-06-21T11:53:56.1322762Z             },
2026-06-21T11:53:56.1322844Z             {
2026-06-21T11:53:56.1322930Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1323015Z               "line": 3904
2026-06-21T11:53:56.1323096Z             },
2026-06-21T11:53:56.1323183Z             {
2026-06-21T11:53:56.1323287Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1323373Z               "line": 4318
2026-06-21T11:53:56.1323455Z             }
2026-06-21T11:53:56.1323536Z           ]
2026-06-21T11:53:56.1323620Z         },
2026-06-21T11:53:56.1323697Z         "int": {
2026-06-21T11:53:56.1323798Z           "complete": false,
2026-06-21T11:53:56.1323888Z           "evidence": []
2026-06-21T11:53:56.1323969Z         },
2026-06-21T11:53:56.1324054Z         "unit": {
2026-06-21T11:53:56.1324135Z           "complete": true,
2026-06-21T11:53:56.1324229Z           "evidence": [
2026-06-21T11:53:56.1324300Z             {
2026-06-21T11:53:56.1324394Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1324476Z               "line": 10225
2026-06-21T11:53:56.1324563Z             },
2026-06-21T11:53:56.1324643Z             {
2026-06-21T11:53:56.1324733Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1324829Z               "line": 10241
2026-06-21T11:53:56.1324900Z             }
2026-06-21T11:53:56.1324986Z           ]
2026-06-21T11:53:56.1325067Z         }
2026-06-21T11:53:56.1325149Z       }
2026-06-21T11:53:56.1325234Z     },
2026-06-21T11:53:56.1325319Z     {
2026-06-21T11:53:56.1325416Z       "id": "REQ-TERM-1",
2026-06-21T11:53:56.1325592Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T11:53:56.1325682Z       "requiredStages": [
2026-06-21T11:53:56.1325768Z         "impl",
2026-06-21T11:53:56.1325854Z         "unit"
2026-06-21T11:53:56.1325940Z       ],
2026-06-21T11:53:56.1326026Z       "stages": {
2026-06-21T11:53:56.1326121Z         "doc": {
2026-06-21T11:53:56.1326211Z           "complete": false,
2026-06-21T11:53:56.1326297Z           "evidence": []
2026-06-21T11:53:56.1326389Z         },
2026-06-21T11:53:56.1326469Z         "impl": {
2026-06-21T11:53:56.1326560Z           "complete": true,
2026-06-21T11:53:56.1326646Z           "evidence": [
2026-06-21T11:53:56.1326742Z             {
2026-06-21T11:53:56.1326920Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T11:53:56.1327007Z               "line": 59
2026-06-21T11:53:56.1327148Z             },
2026-06-21T11:53:56.1327218Z             {
2026-06-21T11:53:56.1327329Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T11:53:56.1327406Z               "line": 234
2026-06-21T11:53:56.1327481Z             },
2026-06-21T11:53:56.1327557Z             {
2026-06-21T11:53:56.1327682Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T11:53:56.1327768Z               "line": 100
2026-06-21T11:53:56.1327839Z             }
2026-06-21T11:53:56.1327924Z           ]
2026-06-21T11:53:56.1328006Z         },
2026-06-21T11:53:56.1328092Z         "int": {
2026-06-21T11:53:56.1328181Z           "complete": false,
2026-06-21T11:53:56.1328268Z           "evidence": []
2026-06-21T11:53:56.1328359Z         },
2026-06-21T11:53:56.1328445Z         "unit": {
2026-06-21T11:53:56.1328540Z           "complete": true,
2026-06-21T11:53:56.1328617Z           "evidence": [
2026-06-21T11:53:56.1328707Z             {
2026-06-21T11:53:56.1328821Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T11:53:56.1328908Z               "line": 24
2026-06-21T11:53:56.1329078Z             },
2026-06-21T11:53:56.1329159Z             {
2026-06-21T11:53:56.1329266Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T11:53:56.1329356Z               "line": 56
2026-06-21T11:53:56.1329435Z             }
2026-06-21T11:53:56.1329520Z           ]
2026-06-21T11:53:56.1329602Z         }
2026-06-21T11:53:56.1329677Z       }
2026-06-21T11:53:56.1329762Z     },
2026-06-21T11:53:56.1329842Z     {
2026-06-21T11:53:56.1329929Z       "id": "REQ-TERM-2",
2026-06-21T11:53:56.1330109Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T11:53:56.1330201Z       "requiredStages": [
2026-06-21T11:53:56.1330287Z         "impl",
2026-06-21T11:53:56.1330372Z         "unit"
2026-06-21T11:53:56.1330458Z       ],
2026-06-21T11:53:56.1330549Z       "stages": {
2026-06-21T11:53:56.1330630Z         "doc": {
2026-06-21T11:53:56.1330729Z           "complete": false,
2026-06-21T11:53:56.1330816Z           "evidence": []
2026-06-21T11:53:56.1330902Z         },
2026-06-21T11:53:56.1333485Z         "impl": {
2026-06-21T11:53:56.1333613Z           "complete": true,
2026-06-21T11:53:56.1333705Z           "evidence": [
2026-06-21T11:53:56.1333790Z             {
2026-06-21T11:53:56.1333914Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T11:53:56.1334000Z               "line": 117
2026-06-21T11:53:56.1334092Z             },
2026-06-21T11:53:56.1334171Z             {
2026-06-21T11:53:56.1334276Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T11:53:56.1334368Z               "line": 127
2026-06-21T11:53:56.1334453Z             }
2026-06-21T11:53:56.1334533Z           ]
2026-06-21T11:53:56.1334618Z         },
2026-06-21T11:53:56.1334705Z         "int": {
2026-06-21T11:53:56.1334803Z           "complete": false,
2026-06-21T11:53:56.1334916Z           "evidence": []
2026-06-21T11:53:56.1334998Z         },
2026-06-21T11:53:56.1335089Z         "unit": {
2026-06-21T11:53:56.1335184Z           "complete": true,
2026-06-21T11:53:56.1335279Z           "evidence": [
2026-06-21T11:53:56.1335361Z             {
2026-06-21T11:53:56.1335489Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T11:53:56.1335569Z               "line": 46
2026-06-21T11:53:56.1335657Z             },
2026-06-21T11:53:56.1335737Z             {
2026-06-21T11:53:56.1335846Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T11:53:56.1335933Z               "line": 77
2026-06-21T11:53:56.1336014Z             }
2026-06-21T11:53:56.1336104Z           ]
2026-06-21T11:53:56.1336185Z         }
2026-06-21T11:53:56.1336271Z       }
2026-06-21T11:53:56.1336348Z     },
2026-06-21T11:53:56.1336433Z     {
2026-06-21T11:53:56.1336514Z       "id": "REQ-TERM-3",
2026-06-21T11:53:56.1336663Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T11:53:56.1336891Z       "requiredStages": [
2026-06-21T11:53:56.1336972Z         "impl",
2026-06-21T11:53:56.1337153Z         "unit"
2026-06-21T11:53:56.1337230Z       ],
2026-06-21T11:53:56.1337316Z       "stages": {
2026-06-21T11:53:56.1337396Z         "doc": {
2026-06-21T11:53:56.1337500Z           "complete": false,
2026-06-21T11:53:56.1337591Z           "evidence": []
2026-06-21T11:53:56.1337670Z         },
2026-06-21T11:53:56.1337755Z         "impl": {
2026-06-21T11:53:56.1337836Z           "complete": true,
2026-06-21T11:53:56.1337932Z           "evidence": [
2026-06-21T11:53:56.1338018Z             {
2026-06-21T11:53:56.1338141Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T11:53:56.1338242Z               "line": 71
2026-06-21T11:53:56.1338328Z             }
2026-06-21T11:53:56.1338408Z           ]
2026-06-21T11:53:56.1338480Z         },
2026-06-21T11:53:56.1338562Z         "int": {
2026-06-21T11:53:56.1338642Z           "complete": false,
2026-06-21T11:53:56.1338742Z           "evidence": []
2026-06-21T11:53:56.1338823Z         },
2026-06-21T11:53:56.1338905Z         "unit": {
2026-06-21T11:53:56.1339085Z           "complete": true,
2026-06-21T11:53:56.1339182Z           "evidence": [
2026-06-21T11:53:56.1339267Z             {
2026-06-21T11:53:56.1339390Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T11:53:56.1339492Z               "line": 37
2026-06-21T11:53:56.1339577Z             },
2026-06-21T11:53:56.1339657Z             {
2026-06-21T11:53:56.1339788Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T11:53:56.1339873Z               "line": 67
2026-06-21T11:53:56.1339962Z             }
2026-06-21T11:53:56.1340047Z           ]
2026-06-21T11:53:56.1340129Z         }
2026-06-21T11:53:56.1340223Z       }
2026-06-21T11:53:56.1340303Z     },
2026-06-21T11:53:56.1340388Z     {
2026-06-21T11:53:56.1340479Z       "id": "REQ-TERM-4",
2026-06-21T11:53:56.1340965Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T11:53:56.1341076Z       "requiredStages": [
2026-06-21T11:53:56.1341176Z         "impl",
2026-06-21T11:53:56.1341271Z         "unit",
2026-06-21T11:53:56.1341347Z         "int"
2026-06-21T11:53:56.1341438Z       ],
2026-06-21T11:53:56.1341528Z       "stages": {
2026-06-21T11:53:56.1341623Z         "doc": {
2026-06-21T11:53:56.1341725Z           "complete": false,
2026-06-21T11:53:56.1341815Z           "evidence": []
2026-06-21T11:53:56.1341896Z         },
2026-06-21T11:53:56.1341986Z         "impl": {
2026-06-21T11:53:56.1342073Z           "complete": true,
2026-06-21T11:53:56.1342167Z           "evidence": [
2026-06-21T11:53:56.1342262Z             {
2026-06-21T11:53:56.1342383Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1342463Z               "line": 37
2026-06-21T11:53:56.1342558Z             },
2026-06-21T11:53:56.1342640Z             {
2026-06-21T11:53:56.1342783Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1342877Z               "line": 25
2026-06-21T11:53:56.1342967Z             },
2026-06-21T11:53:56.1343049Z             {
2026-06-21T11:53:56.1343182Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1343272Z               "line": 114
2026-06-21T11:53:56.1343359Z             },
2026-06-21T11:53:56.1343445Z             {
2026-06-21T11:53:56.1343563Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1343650Z               "line": 267
2026-06-21T11:53:56.1343730Z             },
2026-06-21T11:53:56.1343816Z             {
2026-06-21T11:53:56.1343945Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1344036Z               "line": 289
2026-06-21T11:53:56.1344126Z             },
2026-06-21T11:53:56.1344207Z             {
2026-06-21T11:53:56.1344332Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1344526Z               "line": 307
2026-06-21T11:53:56.1344613Z             },
2026-06-21T11:53:56.1344698Z             {
2026-06-21T11:53:56.1344889Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T11:53:56.1344967Z               "line": 33
2026-06-21T11:53:56.1345050Z             },
2026-06-21T11:53:56.1345145Z             {
2026-06-21T11:53:56.1345269Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1345368Z               "line": 52
2026-06-21T11:53:56.1345462Z             },
2026-06-21T11:53:56.1345544Z             {
2026-06-21T11:53:56.1345659Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1345744Z               "line": 180
2026-06-21T11:53:56.1345839Z             },
2026-06-21T11:53:56.1345926Z             {
2026-06-21T11:53:56.1346058Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1346148Z               "line": 190
2026-06-21T11:53:56.1346231Z             },
2026-06-21T11:53:56.1346331Z             {
2026-06-21T11:53:56.1346440Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1346522Z               "line": 250
2026-06-21T11:53:56.1346607Z             },
2026-06-21T11:53:56.1346683Z             {
2026-06-21T11:53:56.1346807Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1346898Z               "line": 284
2026-06-21T11:53:56.1346993Z             },
2026-06-21T11:53:56.1347069Z             {
2026-06-21T11:53:56.1347199Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1347293Z               "line": 295
2026-06-21T11:53:56.1347374Z             },
2026-06-21T11:53:56.1347452Z             {
2026-06-21T11:53:56.1347566Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1347651Z               "line": 1193
2026-06-21T11:53:56.1347732Z             }
2026-06-21T11:53:56.1347820Z           ]
2026-06-21T11:53:56.1347909Z         },
2026-06-21T11:53:56.1347989Z         "int": {
2026-06-21T11:53:56.1348103Z           "complete": true,
2026-06-21T11:53:56.1348193Z           "evidence": [
2026-06-21T11:53:56.1348296Z             {
2026-06-21T11:53:56.1348420Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T11:53:56.1348512Z               "line": 18
2026-06-21T11:53:56.1348592Z             }
2026-06-21T11:53:56.1348672Z           ]
2026-06-21T11:53:56.1348759Z         },
2026-06-21T11:53:56.1348841Z         "unit": {
2026-06-21T11:53:56.1349025Z           "complete": true,
2026-06-21T11:53:56.1349108Z           "evidence": [
2026-06-21T11:53:56.1349193Z             {
2026-06-21T11:53:56.1349307Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1349393Z               "line": 364
2026-06-21T11:53:56.1349498Z             },
2026-06-21T11:53:56.1349579Z             {
2026-06-21T11:53:56.1349708Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1349784Z               "line": 416
2026-06-21T11:53:56.1349879Z             },
2026-06-21T11:53:56.1349970Z             {
2026-06-21T11:53:56.1350080Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1350156Z               "line": 426
2026-06-21T11:53:56.1350242Z             },
2026-06-21T11:53:56.1350323Z             {
2026-06-21T11:53:56.1350443Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1350532Z               "line": 436
2026-06-21T11:53:56.1350627Z             },
2026-06-21T11:53:56.1350708Z             {
2026-06-21T11:53:56.1350835Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1350920Z               "line": 456
2026-06-21T11:53:56.1351016Z             },
2026-06-21T11:53:56.1351097Z             {
2026-06-21T11:53:56.1351225Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1351331Z               "line": 478
2026-06-21T11:53:56.1351412Z             },
2026-06-21T11:53:56.1351502Z             {
2026-06-21T11:53:56.1351611Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1351798Z               "line": 491
2026-06-21T11:53:56.1351878Z             },
2026-06-21T11:53:56.1352056Z             {
2026-06-21T11:53:56.1352188Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T11:53:56.1352275Z               "line": 502
2026-06-21T11:53:56.1352356Z             },
2026-06-21T11:53:56.1352442Z             {
2026-06-21T11:53:56.1352561Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T11:53:56.1352647Z               "line": 108
2026-06-21T11:53:56.1352727Z             },
2026-06-21T11:53:56.1352808Z             {
2026-06-21T11:53:56.1352920Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T11:53:56.1353005Z               "line": 119
2026-06-21T11:53:56.1353075Z             },
2026-06-21T11:53:56.1353156Z             {
2026-06-21T11:53:56.1353272Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T11:53:56.1353362Z               "line": 127
2026-06-21T11:53:56.1353446Z             },
2026-06-21T11:53:56.1353527Z             {
2026-06-21T11:53:56.1353652Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1353742Z               "line": 474
2026-06-21T11:53:56.1353832Z             },
2026-06-21T11:53:56.1353919Z             {
2026-06-21T11:53:56.1354029Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1354113Z               "line": 501
2026-06-21T11:53:56.1354196Z             },
2026-06-21T11:53:56.1354281Z             {
2026-06-21T11:53:56.1354390Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1354471Z               "line": 520
2026-06-21T11:53:56.1354563Z             },
2026-06-21T11:53:56.1354643Z             {
2026-06-21T11:53:56.1354767Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1354844Z               "line": 535
2026-06-21T11:53:56.1354934Z             },
2026-06-21T11:53:56.1355015Z             {
2026-06-21T11:53:56.1355140Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1355235Z               "line": 561
2026-06-21T11:53:56.1355315Z             },
2026-06-21T11:53:56.1355406Z             {
2026-06-21T11:53:56.1355517Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1355606Z               "line": 581
2026-06-21T11:53:56.1355691Z             },
2026-06-21T11:53:56.1355777Z             {
2026-06-21T11:53:56.1355895Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1355984Z               "line": 591
2026-06-21T11:53:56.1356069Z             },
2026-06-21T11:53:56.1356156Z             {
2026-06-21T11:53:56.1356271Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1356356Z               "line": 683
2026-06-21T11:53:56.1356433Z             },
2026-06-21T11:53:56.1356519Z             {
2026-06-21T11:53:56.1356628Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1356713Z               "line": 885
2026-06-21T11:53:56.1356796Z             },
2026-06-21T11:53:56.1356881Z             {
2026-06-21T11:53:56.1356985Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1357077Z               "line": 9792
2026-06-21T11:53:56.1357158Z             }
2026-06-21T11:53:56.1357239Z           ]
2026-06-21T11:53:56.1357329Z         }
2026-06-21T11:53:56.1357406Z       }
2026-06-21T11:53:56.1357491Z     },
2026-06-21T11:53:56.1357563Z     {
2026-06-21T11:53:56.1357653Z       "id": "REQ-TERM-5",
2026-06-21T11:53:56.1359280Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T11:53:56.1359600Z       "requiredStages": [
2026-06-21T11:53:56.1359691Z         "doc",
2026-06-21T11:53:56.1359777Z         "impl",
2026-06-21T11:53:56.1359857Z         "unit",
2026-06-21T11:53:56.1359934Z         "int"
2026-06-21T11:53:56.1360015Z       ],
2026-06-21T11:53:56.1360101Z       "stages": {
2026-06-21T11:53:56.1360177Z         "doc": {
2026-06-21T11:53:56.1360273Z           "complete": true,
2026-06-21T11:53:56.1360359Z           "evidence": [
2026-06-21T11:53:56.1360444Z             {
2026-06-21T11:53:56.1360549Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.1360631Z               "line": 234
2026-06-21T11:53:56.1360716Z             }
2026-06-21T11:53:56.1360787Z           ]
2026-06-21T11:53:56.1360874Z         },
2026-06-21T11:53:56.1360956Z         "impl": {
2026-06-21T11:53:56.1361040Z           "complete": true,
2026-06-21T11:53:56.1361120Z           "evidence": [
2026-06-21T11:53:56.1361206Z             {
2026-06-21T11:53:56.1361334Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1361419Z               "line": 75
2026-06-21T11:53:56.1361504Z             },
2026-06-21T11:53:56.1361581Z             {
2026-06-21T11:53:56.1361691Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1361780Z               "line": 131
2026-06-21T11:53:56.1361861Z             },
2026-06-21T11:53:56.1361948Z             {
2026-06-21T11:53:56.1362053Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.1362138Z               "line": 22
2026-06-21T11:53:56.1362215Z             },
2026-06-21T11:53:56.1362301Z             {
2026-06-21T11:53:56.1362405Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.1362486Z               "line": 87
2026-06-21T11:53:56.1362573Z             },
2026-06-21T11:53:56.1362658Z             {
2026-06-21T11:53:56.1362767Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T11:53:56.1362864Z               "line": 30
2026-06-21T11:53:56.1362945Z             },
2026-06-21T11:53:56.1363030Z             {
2026-06-21T11:53:56.1363150Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1363245Z               "line": 103
2026-06-21T11:53:56.1363325Z             },
2026-06-21T11:53:56.1363406Z             {
2026-06-21T11:53:56.1363532Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1363611Z               "line": 167
2026-06-21T11:53:56.1363693Z             },
2026-06-21T11:53:56.1363775Z             {
2026-06-21T11:53:56.1363903Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1363982Z               "line": 434
2026-06-21T11:53:56.1364063Z             },
2026-06-21T11:53:56.1364149Z             {
2026-06-21T11:53:56.1364251Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1364349Z               "line": 5650
2026-06-21T11:53:56.1364431Z             },
2026-06-21T11:53:56.1364513Z             {
2026-06-21T11:53:56.1364622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1364707Z               "line": 5957
2026-06-21T11:53:56.1364789Z             }
2026-06-21T11:53:56.1364874Z           ]
2026-06-21T11:53:56.1364964Z         },
2026-06-21T11:53:56.1365036Z         "int": {
2026-06-21T11:53:56.1365133Z           "complete": true,
2026-06-21T11:53:56.1365227Z           "evidence": [
2026-06-21T11:53:56.1365303Z             {
2026-06-21T11:53:56.1365452Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T11:53:56.1365546Z               "line": 17
2026-06-21T11:53:56.1365627Z             }
2026-06-21T11:53:56.1365715Z           ]
2026-06-21T11:53:56.1365800Z         },
2026-06-21T11:53:56.1365889Z         "unit": {
2026-06-21T11:53:56.1365971Z           "complete": true,
2026-06-21T11:53:56.1366058Z           "evidence": [
2026-06-21T11:53:56.1366143Z             {
2026-06-21T11:53:56.1366261Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1366428Z               "line": 375
2026-06-21T11:53:56.1366525Z             },
2026-06-21T11:53:56.1366674Z             {
2026-06-21T11:53:56.1366784Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.1366873Z               "line": 162
2026-06-21T11:53:56.1366954Z             },
2026-06-21T11:53:56.1367036Z             {
2026-06-21T11:53:56.1367151Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.1367250Z               "line": 179
2026-06-21T11:53:56.1367332Z             },
2026-06-21T11:53:56.1367417Z             {
2026-06-21T11:53:56.1367526Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.1367608Z               "line": 201
2026-06-21T11:53:56.1367690Z             },
2026-06-21T11:53:56.1367775Z             {
2026-06-21T11:53:56.1367884Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.1367966Z               "line": 212
2026-06-21T11:53:56.1368051Z             },
2026-06-21T11:53:56.1368133Z             {
2026-06-21T11:53:56.1368242Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T11:53:56.1368343Z               "line": 223
2026-06-21T11:53:56.1368423Z             },
2026-06-21T11:53:56.1368499Z             {
2026-06-21T11:53:56.1368625Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1368705Z               "line": 1525
2026-06-21T11:53:56.1368795Z             },
2026-06-21T11:53:56.1368877Z             {
2026-06-21T11:53:56.1369085Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1369184Z               "line": 1568
2026-06-21T11:53:56.1369285Z             },
2026-06-21T11:53:56.1369360Z             {
2026-06-21T11:53:56.1369487Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1369579Z               "line": 606
2026-06-21T11:53:56.1369660Z             },
2026-06-21T11:53:56.1369745Z             {
2026-06-21T11:53:56.1369865Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1369946Z               "line": 634
2026-06-21T11:53:56.1370027Z             },
2026-06-21T11:53:56.1370112Z             {
2026-06-21T11:53:56.1370233Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1370313Z               "line": 646
2026-06-21T11:53:56.1370393Z             },
2026-06-21T11:53:56.1370480Z             {
2026-06-21T11:53:56.1370595Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1370685Z               "line": 669
2026-06-21T11:53:56.1370766Z             },
2026-06-21T11:53:56.1370858Z             {
2026-06-21T11:53:56.1370961Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1371057Z               "line": 8503
2026-06-21T11:53:56.1371143Z             },
2026-06-21T11:53:56.1371220Z             {
2026-06-21T11:53:56.1371333Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1371414Z               "line": 8561
2026-06-21T11:53:56.1371502Z             }
2026-06-21T11:53:56.1371591Z           ]
2026-06-21T11:53:56.1371680Z         }
2026-06-21T11:53:56.1371771Z       }
2026-06-21T11:53:56.1371856Z     },
2026-06-21T11:53:56.1371945Z     {
2026-06-21T11:53:56.1372035Z       "id": "REQ-TERM-6",
2026-06-21T11:53:56.1373176Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T11:53:56.1373280Z       "requiredStages": [
2026-06-21T11:53:56.1373366Z         "impl",
2026-06-21T11:53:56.1373457Z         "unit",
2026-06-21T11:53:56.1373542Z         "int"
2026-06-21T11:53:56.1373623Z       ],
2026-06-21T11:53:56.1373710Z       "stages": {
2026-06-21T11:53:56.1373796Z         "doc": {
2026-06-21T11:53:56.1373991Z           "complete": false,
2026-06-21T11:53:56.1374082Z           "evidence": []
2026-06-21T11:53:56.1374258Z         },
2026-06-21T11:53:56.1374335Z         "impl": {
2026-06-21T11:53:56.1374426Z           "complete": true,
2026-06-21T11:53:56.1374519Z           "evidence": [
2026-06-21T11:53:56.1374604Z             {
2026-06-21T11:53:56.1374734Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1374829Z               "line": 132
2026-06-21T11:53:56.1374914Z             },
2026-06-21T11:53:56.1375001Z             {
2026-06-21T11:53:56.1375120Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1375201Z               "line": 187
2026-06-21T11:53:56.1375286Z             },
2026-06-21T11:53:56.1375373Z             {
2026-06-21T11:53:56.1375483Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1375572Z               "line": 17
2026-06-21T11:53:56.1375645Z             },
2026-06-21T11:53:56.1375735Z             {
2026-06-21T11:53:56.1375863Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1375950Z               "line": 104
2026-06-21T11:53:56.1376031Z             },
2026-06-21T11:53:56.1376116Z             {
2026-06-21T11:53:56.1376240Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1376327Z               "line": 319
2026-06-21T11:53:56.1376421Z             },
2026-06-21T11:53:56.1376507Z             {
2026-06-21T11:53:56.1376613Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1376704Z               "line": 396
2026-06-21T11:53:56.1376787Z             }
2026-06-21T11:53:56.1376877Z           ]
2026-06-21T11:53:56.1376964Z         },
2026-06-21T11:53:56.1377058Z         "int": {
2026-06-21T11:53:56.1377152Z           "complete": true,
2026-06-21T11:53:56.1377239Z           "evidence": [
2026-06-21T11:53:56.1377324Z             {
2026-06-21T11:53:56.1377467Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T11:53:56.1377563Z               "line": 18
2026-06-21T11:53:56.1377635Z             }
2026-06-21T11:53:56.1377720Z           ]
2026-06-21T11:53:56.1377805Z         },
2026-06-21T11:53:56.1377892Z         "unit": {
2026-06-21T11:53:56.1377982Z           "complete": true,
2026-06-21T11:53:56.1378072Z           "evidence": [
2026-06-21T11:53:56.1378153Z             {
2026-06-21T11:53:56.1378260Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1378355Z               "line": 135
2026-06-21T11:53:56.1378434Z             },
2026-06-21T11:53:56.1378517Z             {
2026-06-21T11:53:56.1378635Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1378716Z               "line": 150
2026-06-21T11:53:56.1378793Z             },
2026-06-21T11:53:56.1378870Z             {
2026-06-21T11:53:56.1379064Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1379147Z               "line": 166
2026-06-21T11:53:56.1379237Z             },
2026-06-21T11:53:56.1379331Z             {
2026-06-21T11:53:56.1379442Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T11:53:56.1379566Z               "line": 257
2026-06-21T11:53:56.1379645Z             },
2026-06-21T11:53:56.1379726Z             {
2026-06-21T11:53:56.1379850Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1379943Z               "line": 738
2026-06-21T11:53:56.1380029Z             },
2026-06-21T11:53:56.1380115Z             {
2026-06-21T11:53:56.1380240Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1380334Z               "line": 759
2026-06-21T11:53:56.1380415Z             },
2026-06-21T11:53:56.1380506Z             {
2026-06-21T11:53:56.1380629Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T11:53:56.1380715Z               "line": 726
2026-06-21T11:53:56.1380798Z             }
2026-06-21T11:53:56.1380883Z           ]
2026-06-21T11:53:56.1380973Z         }
2026-06-21T11:53:56.1381173Z       }
2026-06-21T11:53:56.1381254Z     },
2026-06-21T11:53:56.1381335Z     {
2026-06-21T11:53:56.1381437Z       "id": "REQ-TERM-7",
2026-06-21T11:53:56.1382662Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T11:53:56.1382768Z       "requiredStages": [
2026-06-21T11:53:56.1382848Z         "impl",
2026-06-21T11:53:56.1382933Z         "unit",
2026-06-21T11:53:56.1383016Z         "int"
2026-06-21T11:53:56.1383097Z       ],
2026-06-21T11:53:56.1383182Z       "stages": {
2026-06-21T11:53:56.1383268Z         "doc": {
2026-06-21T11:53:56.1383359Z           "complete": false,
2026-06-21T11:53:56.1383454Z           "evidence": []
2026-06-21T11:53:56.1383540Z         },
2026-06-21T11:53:56.1383626Z         "impl": {
2026-06-21T11:53:56.1383712Z           "complete": true,
2026-06-21T11:53:56.1383797Z           "evidence": [
2026-06-21T11:53:56.1383883Z             {
2026-06-21T11:53:56.1383999Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1384093Z               "line": 133
2026-06-21T11:53:56.1384174Z             },
2026-06-21T11:53:56.1384265Z             {
2026-06-21T11:53:56.1384374Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1384470Z               "line": 326
2026-06-21T11:53:56.1384556Z             },
2026-06-21T11:53:56.1384629Z             {
2026-06-21T11:53:56.1384751Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T11:53:56.1384837Z               "line": 15
2026-06-21T11:53:56.1384919Z             },
2026-06-21T11:53:56.1385004Z             {
2026-06-21T11:53:56.1385122Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T11:53:56.1385222Z               "line": 32
2026-06-21T11:53:56.1385299Z             },
2026-06-21T11:53:56.1385394Z             {
2026-06-21T11:53:56.1385508Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T11:53:56.1385594Z               "line": 49
2026-06-21T11:53:56.1385680Z             },
2026-06-21T11:53:56.1385775Z             {
2026-06-21T11:53:56.1385905Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1385995Z               "line": 286
2026-06-21T11:53:56.1386080Z             },
2026-06-21T11:53:56.1386162Z             {
2026-06-21T11:53:56.1386281Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1386372Z               "line": 320
2026-06-21T11:53:56.1386457Z             }
2026-06-21T11:53:56.1386539Z           ]
2026-06-21T11:53:56.1386624Z         },
2026-06-21T11:53:56.1386715Z         "int": {
2026-06-21T11:53:56.1386805Z           "complete": true,
2026-06-21T11:53:56.1386901Z           "evidence": [
2026-06-21T11:53:56.1386986Z             {
2026-06-21T11:53:56.1387130Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T11:53:56.1387221Z               "line": 19
2026-06-21T11:53:56.1387306Z             }
2026-06-21T11:53:56.1387395Z           ]
2026-06-21T11:53:56.1387481Z         },
2026-06-21T11:53:56.1387571Z         "unit": {
2026-06-21T11:53:56.1387646Z           "complete": true,
2026-06-21T11:53:56.1387741Z           "evidence": [
2026-06-21T11:53:56.1387822Z             {
2026-06-21T11:53:56.1387933Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1388022Z               "line": 455
2026-06-21T11:53:56.1388103Z             },
2026-06-21T11:53:56.1388190Z             {
2026-06-21T11:53:56.1388308Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T11:53:56.1388389Z               "line": 568
2026-06-21T11:53:56.1388481Z             },
2026-06-21T11:53:56.1388561Z             {
2026-06-21T11:53:56.1388762Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T11:53:56.1388848Z               "line": 58
2026-06-21T11:53:56.1389077Z             },
2026-06-21T11:53:56.1389158Z             {
2026-06-21T11:53:56.1389267Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T11:53:56.1389362Z               "line": 77
2026-06-21T11:53:56.1389464Z             },
2026-06-21T11:53:56.1389557Z             {
2026-06-21T11:53:56.1389663Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T11:53:56.1389750Z               "line": 87
2026-06-21T11:53:56.1389839Z             },
2026-06-21T11:53:56.1389920Z             {
2026-06-21T11:53:56.1390031Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T11:53:56.1390112Z               "line": 94
2026-06-21T11:53:56.1390205Z             },
2026-06-21T11:53:56.1390286Z             {
2026-06-21T11:53:56.1390405Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1390499Z               "line": 691
2026-06-21T11:53:56.1390579Z             },
2026-06-21T11:53:56.1390666Z             {
2026-06-21T11:53:56.1390785Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T11:53:56.1390875Z               "line": 716
2026-06-21T11:53:56.1390965Z             }
2026-06-21T11:53:56.1391057Z           ]
2026-06-21T11:53:56.1391143Z         }
2026-06-21T11:53:56.1391218Z       }
2026-06-21T11:53:56.1391310Z     },
2026-06-21T11:53:56.1391391Z     {
2026-06-21T11:53:56.1391490Z       "id": "REQ-UPD-1",
2026-06-21T11:53:56.1391610Z       "title": "Peer-propagated update over P2P",
2026-06-21T11:53:56.1391706Z       "requiredStages": [
2026-06-21T11:53:56.1391801Z         "impl",
2026-06-21T11:53:56.1391886Z         "unit",
2026-06-21T11:53:56.1391968Z         "int"
2026-06-21T11:53:56.1392053Z       ],
2026-06-21T11:53:56.1392139Z       "stages": {
2026-06-21T11:53:56.1392225Z         "doc": {
2026-06-21T11:53:56.1392331Z           "complete": false,
2026-06-21T11:53:56.1392429Z           "evidence": []
2026-06-21T11:53:56.1392520Z         },
2026-06-21T11:53:56.1392597Z         "impl": {
2026-06-21T11:53:56.1392692Z           "complete": true,
2026-06-21T11:53:56.1392782Z           "evidence": [
2026-06-21T11:53:56.1392867Z             {
2026-06-21T11:53:56.1392991Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1393089Z               "line": 28
2026-06-21T11:53:56.1393169Z             },
2026-06-21T11:53:56.1393251Z             {
2026-06-21T11:53:56.1393362Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1393446Z               "line": 103
2026-06-21T11:53:56.1393528Z             },
2026-06-21T11:53:56.1393614Z             {
2026-06-21T11:53:56.1393737Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1393818Z               "line": 342
2026-06-21T11:53:56.1393906Z             },
2026-06-21T11:53:56.1393991Z             {
2026-06-21T11:53:56.1394114Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1394196Z               "line": 22
2026-06-21T11:53:56.1394281Z             },
2026-06-21T11:53:56.1394362Z             {
2026-06-21T11:53:56.1394486Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1394578Z               "line": 207
2026-06-21T11:53:56.1394658Z             },
2026-06-21T11:53:56.1394748Z             {
2026-06-21T11:53:56.1394859Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1394958Z               "line": 283
2026-06-21T11:53:56.1395039Z             },
2026-06-21T11:53:56.1395116Z             {
2026-06-21T11:53:56.1395235Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1395320Z               "line": 340
2026-06-21T11:53:56.1395411Z             },
2026-06-21T11:53:56.1395494Z             {
2026-06-21T11:53:56.1395616Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.1395710Z               "line": 37
2026-06-21T11:53:56.1395786Z             }
2026-06-21T11:53:56.1395968Z           ]
2026-06-21T11:53:56.1396053Z         },
2026-06-21T11:53:56.1396150Z         "int": {
2026-06-21T11:53:56.1396330Z           "complete": true,
2026-06-21T11:53:56.1396426Z           "evidence": [
2026-06-21T11:53:56.1396517Z             {
2026-06-21T11:53:56.1396640Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T11:53:56.1396736Z               "line": 207
2026-06-21T11:53:56.1396817Z             },
2026-06-21T11:53:56.1396907Z             {
2026-06-21T11:53:56.1397026Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T11:53:56.1397123Z               "line": 1082
2026-06-21T11:53:56.1397208Z             }
2026-06-21T11:53:56.1397294Z           ]
2026-06-21T11:53:56.1397375Z         },
2026-06-21T11:53:56.1397466Z         "unit": {
2026-06-21T11:53:56.1397565Z           "complete": true,
2026-06-21T11:53:56.1397651Z           "evidence": [
2026-06-21T11:53:56.1397729Z             {
2026-06-21T11:53:56.1397851Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1397941Z               "line": 490
2026-06-21T11:53:56.1398022Z             },
2026-06-21T11:53:56.1398108Z             {
2026-06-21T11:53:56.1398225Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1398320Z               "line": 616
2026-06-21T11:53:56.1398401Z             },
2026-06-21T11:53:56.1398484Z             {
2026-06-21T11:53:56.1398606Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T11:53:56.1398702Z               "line": 277
2026-06-21T11:53:56.1398778Z             },
2026-06-21T11:53:56.1398859Z             {
2026-06-21T11:53:56.1399051Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.1399136Z               "line": 124
2026-06-21T11:53:56.1399230Z             },
2026-06-21T11:53:56.1399318Z             {
2026-06-21T11:53:56.1399450Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.1399531Z               "line": 200
2026-06-21T11:53:56.1399622Z             }
2026-06-21T11:53:56.1402834Z           ]
2026-06-21T11:53:56.1402929Z         }
2026-06-21T11:53:56.1403018Z       }
2026-06-21T11:53:56.1403090Z     },
2026-06-21T11:53:56.1403177Z     {
2026-06-21T11:53:56.1403267Z       "id": "REQ-UPD-2",
2026-06-21T11:53:56.1403427Z       "title": "All binaries signature-verified before handoff",
2026-06-21T11:53:56.1403532Z       "requiredStages": [
2026-06-21T11:53:56.1403616Z         "impl",
2026-06-21T11:53:56.1403697Z         "unit"
2026-06-21T11:53:56.1403778Z       ],
2026-06-21T11:53:56.1403864Z       "stages": {
2026-06-21T11:53:56.1403950Z         "doc": {
2026-06-21T11:53:56.1404049Z           "complete": false,
2026-06-21T11:53:56.1404141Z           "evidence": []
2026-06-21T11:53:56.1404217Z         },
2026-06-21T11:53:56.1404302Z         "impl": {
2026-06-21T11:53:56.1404388Z           "complete": true,
2026-06-21T11:53:56.1404475Z           "evidence": [
2026-06-21T11:53:56.1404560Z             {
2026-06-21T11:53:56.1404703Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1404809Z               "line": 343
2026-06-21T11:53:56.1404894Z             },
2026-06-21T11:53:56.1404984Z             {
2026-06-21T11:53:56.1405110Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1405208Z               "line": 476
2026-06-21T11:53:56.1405289Z             },
2026-06-21T11:53:56.1405376Z             {
2026-06-21T11:53:56.1405490Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1405571Z               "line": 29
2026-06-21T11:53:56.1405647Z             },
2026-06-21T11:53:56.1405734Z             {
2026-06-21T11:53:56.1405861Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1405943Z               "line": 271
2026-06-21T11:53:56.1406020Z             },
2026-06-21T11:53:56.1406101Z             {
2026-06-21T11:53:56.1406209Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1406299Z               "line": 288
2026-06-21T11:53:56.1406514Z             },
2026-06-21T11:53:56.1406590Z             {
2026-06-21T11:53:56.1406700Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1406871Z               "line": 408
2026-06-21T11:53:56.1406967Z             },
2026-06-21T11:53:56.1407048Z             {
2026-06-21T11:53:56.1407167Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1407257Z               "line": 558
2026-06-21T11:53:56.1407345Z             },
2026-06-21T11:53:56.1407425Z             {
2026-06-21T11:53:56.1407548Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1407640Z               "line": 155
2026-06-21T11:53:56.1407711Z             }
2026-06-21T11:53:56.1407797Z           ]
2026-06-21T11:53:56.1407878Z         },
2026-06-21T11:53:56.1407965Z         "int": {
2026-06-21T11:53:56.1408064Z           "complete": false,
2026-06-21T11:53:56.1408149Z           "evidence": []
2026-06-21T11:53:56.1408231Z         },
2026-06-21T11:53:56.1408313Z         "unit": {
2026-06-21T11:53:56.1408416Z           "complete": true,
2026-06-21T11:53:56.1408496Z           "evidence": [
2026-06-21T11:53:56.1408582Z             {
2026-06-21T11:53:56.1408701Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1408790Z               "line": 750
2026-06-21T11:53:56.1408870Z             },
2026-06-21T11:53:56.1409048Z             {
2026-06-21T11:53:56.1409161Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1409262Z               "line": 811
2026-06-21T11:53:56.1409353Z             },
2026-06-21T11:53:56.1409443Z             {
2026-06-21T11:53:56.1409563Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1409658Z               "line": 825
2026-06-21T11:53:56.1409738Z             },
2026-06-21T11:53:56.1409824Z             {
2026-06-21T11:53:56.1409940Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1410030Z               "line": 841
2026-06-21T11:53:56.1410119Z             },
2026-06-21T11:53:56.1410207Z             {
2026-06-21T11:53:56.1410325Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1410411Z               "line": 932
2026-06-21T11:53:56.1410497Z             },
2026-06-21T11:53:56.1410579Z             {
2026-06-21T11:53:56.1410702Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1410793Z               "line": 414
2026-06-21T11:53:56.1410865Z             },
2026-06-21T11:53:56.1410950Z             {
2026-06-21T11:53:56.1411064Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1411151Z               "line": 427
2026-06-21T11:53:56.1411237Z             },
2026-06-21T11:53:56.1411321Z             {
2026-06-21T11:53:56.1411449Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T11:53:56.1411535Z               "line": 410
2026-06-21T11:53:56.1411615Z             }
2026-06-21T11:53:56.1411699Z           ]
2026-06-21T11:53:56.1411781Z         }
2026-06-21T11:53:56.1411863Z       }
2026-06-21T11:53:56.1411953Z     },
2026-06-21T11:53:56.1412033Z     {
2026-06-21T11:53:56.1412125Z       "id": "REQ-UPD-3",
2026-06-21T11:53:56.1412305Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T11:53:56.1412400Z       "requiredStages": [
2026-06-21T11:53:56.1412492Z         "impl",
2026-06-21T11:53:56.1412578Z         "unit",
2026-06-21T11:53:56.1412662Z         "int"
2026-06-21T11:53:56.1412749Z       ],
2026-06-21T11:53:56.1412831Z       "stages": {
2026-06-21T11:53:56.1412911Z         "doc": {
2026-06-21T11:53:56.1413011Z           "complete": false,
2026-06-21T11:53:56.1413103Z           "evidence": []
2026-06-21T11:53:56.1413183Z         },
2026-06-21T11:53:56.1413274Z         "impl": {
2026-06-21T11:53:56.1413369Z           "complete": true,
2026-06-21T11:53:56.1413460Z           "evidence": [
2026-06-21T11:53:56.1413540Z             {
2026-06-21T11:53:56.1413670Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1413902Z               "line": 40
2026-06-21T11:53:56.1413982Z             },
2026-06-21T11:53:56.1414154Z             {
2026-06-21T11:53:56.1414281Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1414362Z               "line": 87
2026-06-21T11:53:56.1414448Z             },
2026-06-21T11:53:56.1414519Z             {
2026-06-21T11:53:56.1414638Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.1414725Z               "line": 1082
2026-06-21T11:53:56.1414825Z             },
2026-06-21T11:53:56.1414900Z             {
2026-06-21T11:53:56.1415011Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.1415106Z               "line": 2094
2026-06-21T11:53:56.1415182Z             },
2026-06-21T11:53:56.1415263Z             {
2026-06-21T11:53:56.1415379Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1415473Z               "line": 26
2026-06-21T11:53:56.1415563Z             },
2026-06-21T11:53:56.1415645Z             {
2026-06-21T11:53:56.1415763Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1415844Z               "line": 114
2026-06-21T11:53:56.1415936Z             },
2026-06-21T11:53:56.1416018Z             {
2026-06-21T11:53:56.1416131Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1416226Z               "line": 246
2026-06-21T11:53:56.1416304Z             },
2026-06-21T11:53:56.1416393Z             {
2026-06-21T11:53:56.1416488Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1416581Z               "line": 2442
2026-06-21T11:53:56.1416662Z             }
2026-06-21T11:53:56.1416754Z           ]
2026-06-21T11:53:56.1416840Z         },
2026-06-21T11:53:56.1416926Z         "int": {
2026-06-21T11:53:56.1417023Z           "complete": true,
2026-06-21T11:53:56.1417112Z           "evidence": [
2026-06-21T11:53:56.1417198Z             {
2026-06-21T11:53:56.1417318Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T11:53:56.1417417Z               "line": 58
2026-06-21T11:53:56.1417507Z             }
2026-06-21T11:53:56.1417590Z           ]
2026-06-21T11:53:56.1417675Z         },
2026-06-21T11:53:56.1417760Z         "unit": {
2026-06-21T11:53:56.1417856Z           "complete": true,
2026-06-21T11:53:56.1417942Z           "evidence": [
2026-06-21T11:53:56.1418033Z             {
2026-06-21T11:53:56.1418151Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1418239Z               "line": 532
2026-06-21T11:53:56.1418333Z             },
2026-06-21T11:53:56.1418414Z             {
2026-06-21T11:53:56.1418544Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1418629Z               "line": 585
2026-06-21T11:53:56.1418719Z             },
2026-06-21T11:53:56.1418810Z             {
2026-06-21T11:53:56.1418915Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1419085Z               "line": 653
2026-06-21T11:53:56.1419171Z             },
2026-06-21T11:53:56.1419270Z             {
2026-06-21T11:53:56.1419388Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T11:53:56.1419498Z               "line": 1102
2026-06-21T11:53:56.1419584Z             },
2026-06-21T11:53:56.1419665Z             {
2026-06-21T11:53:56.1419779Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1419866Z               "line": 271
2026-06-21T11:53:56.1419946Z             },
2026-06-21T11:53:56.1420031Z             {
2026-06-21T11:53:56.1420142Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1420237Z               "line": 295
2026-06-21T11:53:56.1420318Z             },
2026-06-21T11:53:56.1420404Z             {
2026-06-21T11:53:56.1420514Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1420599Z               "line": 316
2026-06-21T11:53:56.1420680Z             },
2026-06-21T11:53:56.1420762Z             {
2026-06-21T11:53:56.1420881Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1421062Z               "line": 332
2026-06-21T11:53:56.1421148Z             }
2026-06-21T11:53:56.1421314Z           ]
2026-06-21T11:53:56.1421397Z         }
2026-06-21T11:53:56.1421477Z       }
2026-06-21T11:53:56.1421557Z     },
2026-06-21T11:53:56.1421638Z     {
2026-06-21T11:53:56.1421726Z       "id": "REQ-UPD-4",
2026-06-21T11:53:56.1421914Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T11:53:56.1422009Z       "requiredStages": [
2026-06-21T11:53:56.1422105Z         "impl",
2026-06-21T11:53:56.1422184Z         "unit"
2026-06-21T11:53:56.1422269Z       ],
2026-06-21T11:53:56.1422346Z       "stages": {
2026-06-21T11:53:56.1422428Z         "doc": {
2026-06-21T11:53:56.1422527Z           "complete": false,
2026-06-21T11:53:56.1422622Z           "evidence": []
2026-06-21T11:53:56.1422699Z         },
2026-06-21T11:53:56.1422776Z         "impl": {
2026-06-21T11:53:56.1422865Z           "complete": true,
2026-06-21T11:53:56.1422951Z           "evidence": [
2026-06-21T11:53:56.1423038Z             {
2026-06-21T11:53:56.1423152Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1423241Z               "line": 41
2026-06-21T11:53:56.1423324Z             },
2026-06-21T11:53:56.1423414Z             {
2026-06-21T11:53:56.1423533Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1423624Z               "line": 88
2026-06-21T11:53:56.1423705Z             },
2026-06-21T11:53:56.1423790Z             {
2026-06-21T11:53:56.1423910Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T11:53:56.1423987Z               "line": 23
2026-06-21T11:53:56.1424072Z             },
2026-06-21T11:53:56.1424158Z             {
2026-06-21T11:53:56.1424278Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T11:53:56.1424369Z               "line": 56
2026-06-21T11:53:56.1424457Z             },
2026-06-21T11:53:56.1424538Z             {
2026-06-21T11:53:56.1424652Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T11:53:56.1424737Z               "line": 77
2026-06-21T11:53:56.1424826Z             },
2026-06-21T11:53:56.1424913Z             {
2026-06-21T11:53:56.1425018Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T11:53:56.1425112Z               "line": 236
2026-06-21T11:53:56.1425203Z             },
2026-06-21T11:53:56.1425276Z             {
2026-06-21T11:53:56.1425404Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T11:53:56.1425489Z               "line": 108
2026-06-21T11:53:56.1425576Z             },
2026-06-21T11:53:56.1425666Z             {
2026-06-21T11:53:56.1425780Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.1425862Z               "line": 270
2026-06-21T11:53:56.1425948Z             },
2026-06-21T11:53:56.1426038Z             {
2026-06-21T11:53:56.1426138Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1426234Z               "line": 2441
2026-06-21T11:53:56.1426314Z             }
2026-06-21T11:53:56.1426405Z           ]
2026-06-21T11:53:56.1426486Z         },
2026-06-21T11:53:56.1426583Z         "int": {
2026-06-21T11:53:56.1426686Z           "complete": false,
2026-06-21T11:53:56.1426777Z           "evidence": []
2026-06-21T11:53:56.1426859Z         },
2026-06-21T11:53:56.1426944Z         "unit": {
2026-06-21T11:53:56.1427039Z           "complete": true,
2026-06-21T11:53:56.1427131Z           "evidence": [
2026-06-21T11:53:56.1427217Z             {
2026-06-21T11:53:56.1427343Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1427428Z               "line": 581
2026-06-21T11:53:56.1427510Z             },
2026-06-21T11:53:56.1427593Z             {
2026-06-21T11:53:56.1427720Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1427806Z               "line": 706
2026-06-21T11:53:56.1427892Z             },
2026-06-21T11:53:56.1427977Z             {
2026-06-21T11:53:56.1428087Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T11:53:56.1428250Z               "line": 384
2026-06-21T11:53:56.1428644Z             },
2026-06-21T11:53:56.1428731Z             {
2026-06-21T11:53:56.1428850Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T11:53:56.1429007Z               "line": 102
2026-06-21T11:53:56.1429099Z             },
2026-06-21T11:53:56.1429170Z             {
2026-06-21T11:53:56.1429284Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T11:53:56.1429370Z               "line": 123
2026-06-21T11:53:56.1429457Z             },
2026-06-21T11:53:56.1429541Z             {
2026-06-21T11:53:56.1429655Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T11:53:56.1429765Z               "line": 142
2026-06-21T11:53:56.1429853Z             },
2026-06-21T11:53:56.1429934Z             {
2026-06-21T11:53:56.1430043Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T11:53:56.1430125Z               "line": 582
2026-06-21T11:53:56.1430215Z             },
2026-06-21T11:53:56.1430300Z             {
2026-06-21T11:53:56.1430421Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T11:53:56.1430506Z               "line": 566
2026-06-21T11:53:56.1430592Z             },
2026-06-21T11:53:56.1430678Z             {
2026-06-21T11:53:56.1430783Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1430882Z               "line": 8256
2026-06-21T11:53:56.1430959Z             }
2026-06-21T11:53:56.1431046Z           ]
2026-06-21T11:53:56.1431126Z         }
2026-06-21T11:53:56.1431202Z       }
2026-06-21T11:53:56.1431293Z     },
2026-06-21T11:53:56.1431374Z     {
2026-06-21T11:53:56.1431460Z       "id": "REQ-UPD-5",
2026-06-21T11:53:56.1431598Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T11:53:56.1431699Z       "requiredStages": [
2026-06-21T11:53:56.1431784Z         "impl",
2026-06-21T11:53:56.1431865Z         "unit"
2026-06-21T11:53:56.1431947Z       ],
2026-06-21T11:53:56.1432033Z       "stages": {
2026-06-21T11:53:56.1432132Z         "doc": {
2026-06-21T11:53:56.1432228Z           "complete": false,
2026-06-21T11:53:56.1432324Z           "evidence": []
2026-06-21T11:53:56.1432404Z         },
2026-06-21T11:53:56.1432488Z         "impl": {
2026-06-21T11:53:56.1432584Z           "complete": true,
2026-06-21T11:53:56.1432669Z           "evidence": [
2026-06-21T11:53:56.1432753Z             {
2026-06-21T11:53:56.1432887Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1432983Z               "line": 27
2026-06-21T11:53:56.1433064Z             },
2026-06-21T11:53:56.1433148Z             {
2026-06-21T11:53:56.1433274Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1433374Z               "line": 87
2026-06-21T11:53:56.1433463Z             },
2026-06-21T11:53:56.1433545Z             {
2026-06-21T11:53:56.1433679Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1433769Z               "line": 145
2026-06-21T11:53:56.1433869Z             },
2026-06-21T11:53:56.1433951Z             {
2026-06-21T11:53:56.1434079Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1434170Z               "line": 492
2026-06-21T11:53:56.1434251Z             },
2026-06-21T11:53:56.1434341Z             {
2026-06-21T11:53:56.1434460Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1434543Z               "line": 546
2026-06-21T11:53:56.1434628Z             }
2026-06-21T11:53:56.1434723Z           ]
2026-06-21T11:53:56.1434800Z         },
2026-06-21T11:53:56.1434881Z         "int": {
2026-06-21T11:53:56.1434989Z           "complete": false,
2026-06-21T11:53:56.1435079Z           "evidence": []
2026-06-21T11:53:56.1435165Z         },
2026-06-21T11:53:56.1435250Z         "unit": {
2026-06-21T11:53:56.1435344Z           "complete": true,
2026-06-21T11:53:56.1435443Z           "evidence": [
2026-06-21T11:53:56.1435520Z             {
2026-06-21T11:53:56.1435649Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1435826Z               "line": 272
2026-06-21T11:53:56.1436020Z             },
2026-06-21T11:53:56.1436107Z             {
2026-06-21T11:53:56.1436245Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1436335Z               "line": 286
2026-06-21T11:53:56.1436417Z             },
2026-06-21T11:53:56.1436508Z             {
2026-06-21T11:53:56.1436627Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1436722Z               "line": 300
2026-06-21T11:53:56.1436804Z             },
2026-06-21T11:53:56.1436893Z             {
2026-06-21T11:53:56.1437018Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1437099Z               "line": 314
2026-06-21T11:53:56.1437185Z             },
2026-06-21T11:53:56.1437266Z             {
2026-06-21T11:53:56.1437396Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1437490Z               "line": 348
2026-06-21T11:53:56.1437565Z             },
2026-06-21T11:53:56.1437657Z             {
2026-06-21T11:53:56.1437787Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1437880Z               "line": 1071
2026-06-21T11:53:56.1437965Z             }
2026-06-21T11:53:56.1438051Z           ]
2026-06-21T11:53:56.1438143Z         }
2026-06-21T11:53:56.1438223Z       }
2026-06-21T11:53:56.1438308Z     },
2026-06-21T11:53:56.1438390Z     {
2026-06-21T11:53:56.1438476Z       "id": "REQ-UPD-6",
2026-06-21T11:53:56.1439401Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T11:53:56.1439505Z       "requiredStages": [
2026-06-21T11:53:56.1439596Z         "doc",
2026-06-21T11:53:56.1439674Z         "impl",
2026-06-21T11:53:56.1439758Z         "unit",
2026-06-21T11:53:56.1439844Z         "int"
2026-06-21T11:53:56.1439930Z       ],
2026-06-21T11:53:56.1440008Z       "stages": {
2026-06-21T11:53:56.1440087Z         "doc": {
2026-06-21T11:53:56.1440191Z           "complete": true,
2026-06-21T11:53:56.1440277Z           "evidence": [
2026-06-21T11:53:56.1440367Z             {
2026-06-21T11:53:56.1440508Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T11:53:56.1440623Z               "line": 3
2026-06-21T11:53:56.1440710Z             },
2026-06-21T11:53:56.1440799Z             {
2026-06-21T11:53:56.1440913Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T11:53:56.1441000Z               "line": 3
2026-06-21T11:53:56.1441085Z             },
2026-06-21T11:53:56.1441171Z             {
2026-06-21T11:53:56.1441324Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T11:53:56.1441400Z               "line": 3
2026-06-21T11:53:56.1441490Z             }
2026-06-21T11:53:56.1441577Z           ]
2026-06-21T11:53:56.1441667Z         },
2026-06-21T11:53:56.1441762Z         "impl": {
2026-06-21T11:53:56.1441843Z           "complete": true,
2026-06-21T11:53:56.1441944Z           "evidence": [
2026-06-21T11:53:56.1442030Z             {
2026-06-21T11:53:56.1442153Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1442254Z               "line": 76
2026-06-21T11:53:56.1442339Z             },
2026-06-21T11:53:56.1442425Z             {
2026-06-21T11:53:56.1442555Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1442653Z               "line": 212
2026-06-21T11:53:56.1442735Z             },
2026-06-21T11:53:56.1442817Z             {
2026-06-21T11:53:56.1442945Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1443030Z               "line": 69
2026-06-21T11:53:56.1443120Z             },
2026-06-21T11:53:56.1443206Z             {
2026-06-21T11:53:56.1443328Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1443519Z               "line": 133
2026-06-21T11:53:56.1443600Z             },
2026-06-21T11:53:56.1443776Z             {
2026-06-21T11:53:56.1443896Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1443985Z               "line": 243
2026-06-21T11:53:56.1444066Z             },
2026-06-21T11:53:56.1444149Z             {
2026-06-21T11:53:56.1444263Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1444343Z               "line": 406
2026-06-21T11:53:56.1444429Z             },
2026-06-21T11:53:56.1444511Z             {
2026-06-21T11:53:56.1444634Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1444720Z               "line": 534
2026-06-21T11:53:56.1444802Z             },
2026-06-21T11:53:56.1444882Z             {
2026-06-21T11:53:56.1444996Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1445089Z               "line": 548
2026-06-21T11:53:56.1445169Z             },
2026-06-21T11:53:56.1445253Z             {
2026-06-21T11:53:56.1445369Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1445460Z               "line": 603
2026-06-21T11:53:56.1445545Z             },
2026-06-21T11:53:56.1445630Z             {
2026-06-21T11:53:56.1445744Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1445834Z               "line": 634
2026-06-21T11:53:56.1445923Z             },
2026-06-21T11:53:56.1446008Z             {
2026-06-21T11:53:56.1446138Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T11:53:56.1446233Z               "line": 137
2026-06-21T11:53:56.1446314Z             },
2026-06-21T11:53:56.1446405Z             {
2026-06-21T11:53:56.1446529Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T11:53:56.1446619Z               "line": 184
2026-06-21T11:53:56.1446706Z             },
2026-06-21T11:53:56.1446796Z             {
2026-06-21T11:53:56.1446924Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1447011Z               "line": 78
2026-06-21T11:53:56.1447106Z             },
2026-06-21T11:53:56.1447182Z             {
2026-06-21T11:53:56.1447306Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1447402Z               "line": 114
2026-06-21T11:53:56.1447483Z             },
2026-06-21T11:53:56.1447568Z             {
2026-06-21T11:53:56.1447679Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1447764Z               "line": 185
2026-06-21T11:53:56.1447845Z             },
2026-06-21T11:53:56.1447946Z             {
2026-06-21T11:53:56.1448069Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1448160Z               "line": 260
2026-06-21T11:53:56.1448246Z             },
2026-06-21T11:53:56.1448327Z             {
2026-06-21T11:53:56.1448440Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1448520Z               "line": 292
2026-06-21T11:53:56.1448607Z             },
2026-06-21T11:53:56.1448688Z             {
2026-06-21T11:53:56.1448801Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1448902Z               "line": 323
2026-06-21T11:53:56.1449070Z             },
2026-06-21T11:53:56.1449150Z             {
2026-06-21T11:53:56.1449270Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1449355Z               "line": 346
2026-06-21T11:53:56.1449455Z             },
2026-06-21T11:53:56.1449532Z             {
2026-06-21T11:53:56.1449656Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1449742Z               "line": 388
2026-06-21T11:53:56.1449827Z             },
2026-06-21T11:53:56.1449904Z             {
2026-06-21T11:53:56.1450027Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1450127Z               "line": 398
2026-06-21T11:53:56.1450205Z             },
2026-06-21T11:53:56.1450295Z             {
2026-06-21T11:53:56.1450520Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1450619Z               "line": 410
2026-06-21T11:53:56.1450793Z             },
2026-06-21T11:53:56.1450875Z             {
2026-06-21T11:53:56.1450997Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1451082Z               "line": 420
2026-06-21T11:53:56.1451168Z             },
2026-06-21T11:53:56.1451250Z             {
2026-06-21T11:53:56.1451364Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1451445Z               "line": 439
2026-06-21T11:53:56.1451536Z             },
2026-06-21T11:53:56.1451627Z             {
2026-06-21T11:53:56.1451731Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1451837Z               "line": 449
2026-06-21T11:53:56.1451908Z             },
2026-06-21T11:53:56.1451993Z             {
2026-06-21T11:53:56.1452113Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1452203Z               "line": 94
2026-06-21T11:53:56.1452298Z             },
2026-06-21T11:53:56.1452375Z             {
2026-06-21T11:53:56.1452490Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1452580Z               "line": 120
2026-06-21T11:53:56.1452675Z             },
2026-06-21T11:53:56.1452772Z             {
2026-06-21T11:53:56.1452890Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1452985Z               "line": 135
2026-06-21T11:53:56.1453067Z             },
2026-06-21T11:53:56.1453153Z             {
2026-06-21T11:53:56.1453262Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1453348Z               "line": 162
2026-06-21T11:53:56.1453440Z             },
2026-06-21T11:53:56.1453519Z             {
2026-06-21T11:53:56.1453628Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1453723Z               "line": 174
2026-06-21T11:53:56.1453804Z             },
2026-06-21T11:53:56.1453883Z             {
2026-06-21T11:53:56.1453997Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1454089Z               "line": 185
2026-06-21T11:53:56.1454170Z             },
2026-06-21T11:53:56.1454250Z             {
2026-06-21T11:53:56.1454355Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1454451Z               "line": 451
2026-06-21T11:53:56.1454527Z             },
2026-06-21T11:53:56.1454612Z             {
2026-06-21T11:53:56.1454732Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1454818Z               "line": 573
2026-06-21T11:53:56.1454908Z             },
2026-06-21T11:53:56.1454989Z             {
2026-06-21T11:53:56.1455113Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1455199Z               "line": 171
2026-06-21T11:53:56.1455285Z             },
2026-06-21T11:53:56.1455367Z             {
2026-06-21T11:53:56.1455480Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.1455566Z               "line": 65
2026-06-21T11:53:56.1455653Z             },
2026-06-21T11:53:56.1455738Z             {
2026-06-21T11:53:56.1455848Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.1455930Z               "line": 71
2026-06-21T11:53:56.1456020Z             },
2026-06-21T11:53:56.1456100Z             {
2026-06-21T11:53:56.1456223Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T11:53:56.1456314Z               "line": 77
2026-06-21T11:53:56.1456398Z             },
2026-06-21T11:53:56.1456492Z             {
2026-06-21T11:53:56.1456607Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1456698Z               "line": 778
2026-06-21T11:53:56.1456789Z             },
2026-06-21T11:53:56.1456879Z             {
2026-06-21T11:53:56.1456985Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1457084Z               "line": 795
2026-06-21T11:53:56.1457174Z             },
2026-06-21T11:53:56.1457257Z             {
2026-06-21T11:53:56.1457441Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1457528Z               "line": 838
2026-06-21T11:53:56.1457666Z             },
2026-06-21T11:53:56.1457747Z             {
2026-06-21T11:53:56.1457856Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1457948Z               "line": 981
2026-06-21T11:53:56.1458028Z             },
2026-06-21T11:53:56.1458109Z             {
2026-06-21T11:53:56.1458215Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1458314Z               "line": 1131
2026-06-21T11:53:56.1458396Z             }
2026-06-21T11:53:56.1458477Z           ]
2026-06-21T11:53:56.1458558Z         },
2026-06-21T11:53:56.1458643Z         "int": {
2026-06-21T11:53:56.1458743Z           "complete": true,
2026-06-21T11:53:56.1458830Z           "evidence": [
2026-06-21T11:53:56.1458921Z             {
2026-06-21T11:53:56.1459143Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T11:53:56.1459248Z               "line": 569
2026-06-21T11:53:56.1459334Z             },
2026-06-21T11:53:56.1459419Z             {
2026-06-21T11:53:56.1459554Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T11:53:56.1459635Z               "line": 135
2026-06-21T11:53:56.1459714Z             }
2026-06-21T11:53:56.1459797Z           ]
2026-06-21T11:53:56.1459892Z         },
2026-06-21T11:53:56.1459982Z         "unit": {
2026-06-21T11:53:56.1460077Z           "complete": true,
2026-06-21T11:53:56.1460174Z           "evidence": [
2026-06-21T11:53:56.1460249Z             {
2026-06-21T11:53:56.1460378Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1460459Z               "line": 626
2026-06-21T11:53:56.1460545Z             },
2026-06-21T11:53:56.1460635Z             {
2026-06-21T11:53:56.1460765Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1460851Z               "line": 675
2026-06-21T11:53:56.1460930Z             },
2026-06-21T11:53:56.1461017Z             {
2026-06-21T11:53:56.1461137Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T11:53:56.1461231Z               "line": 696
2026-06-21T11:53:56.1461312Z             },
2026-06-21T11:53:56.1461397Z             {
2026-06-21T11:53:56.1461520Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1461595Z               "line": 513
2026-06-21T11:53:56.1461680Z             },
2026-06-21T11:53:56.1461762Z             {
2026-06-21T11:53:56.1461886Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1461981Z               "line": 638
2026-06-21T11:53:56.1462058Z             },
2026-06-21T11:53:56.1462144Z             {
2026-06-21T11:53:56.1462262Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1462344Z               "line": 675
2026-06-21T11:53:56.1462421Z             },
2026-06-21T11:53:56.1462511Z             {
2026-06-21T11:53:56.1462629Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1462717Z               "line": 947
2026-06-21T11:53:56.1462806Z             },
2026-06-21T11:53:56.1462887Z             {
2026-06-21T11:53:56.1463012Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1463111Z               "line": 969
2026-06-21T11:53:56.1463197Z             },
2026-06-21T11:53:56.1463278Z             {
2026-06-21T11:53:56.1463394Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1463478Z               "line": 986
2026-06-21T11:53:56.1463559Z             },
2026-06-21T11:53:56.1463646Z             {
2026-06-21T11:53:56.1463769Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1463850Z               "line": 1001
2026-06-21T11:53:56.1463942Z             },
2026-06-21T11:53:56.1464024Z             {
2026-06-21T11:53:56.1464145Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1464225Z               "line": 1027
2026-06-21T11:53:56.1464317Z             },
2026-06-21T11:53:56.1464500Z             {
2026-06-21T11:53:56.1464620Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T11:53:56.1464820Z               "line": 457
2026-06-21T11:53:56.1464906Z             },
2026-06-21T11:53:56.1464992Z             {
2026-06-21T11:53:56.1465120Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T11:53:56.1465211Z               "line": 338
2026-06-21T11:53:56.1465302Z             },
2026-06-21T11:53:56.1465378Z             {
2026-06-21T11:53:56.1465492Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1465579Z               "line": 10549
2026-06-21T11:53:56.1465659Z             },
2026-06-21T11:53:56.1465740Z             {
2026-06-21T11:53:56.1465855Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1465946Z               "line": 1260
2026-06-21T11:53:56.1466031Z             },
2026-06-21T11:53:56.1466117Z             {
2026-06-21T11:53:56.1466233Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T11:53:56.1466331Z               "line": 130
2026-06-21T11:53:56.1466417Z             }
2026-06-21T11:53:56.1466509Z           ]
2026-06-21T11:53:56.1466599Z         }
2026-06-21T11:53:56.1466684Z       }
2026-06-21T11:53:56.1469884Z     },
2026-06-21T11:53:56.1469989Z     {
2026-06-21T11:53:56.1470090Z       "id": "REQ-UPD-7",
2026-06-21T11:53:56.1472255Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T11:53:56.1472380Z       "requiredStages": [
2026-06-21T11:53:56.1472470Z         "impl",
2026-06-21T11:53:56.1472560Z         "unit"
2026-06-21T11:53:56.1472647Z       ],
2026-06-21T11:53:56.1472733Z       "stages": {
2026-06-21T11:53:56.1472822Z         "doc": {
2026-06-21T11:53:56.1472924Z           "complete": false,
2026-06-21T11:53:56.1473009Z           "evidence": []
2026-06-21T11:53:56.1473095Z         },
2026-06-21T11:53:56.1473180Z         "impl": {
2026-06-21T11:53:56.1473281Z           "complete": true,
2026-06-21T11:53:56.1473366Z           "evidence": [
2026-06-21T11:53:56.1473447Z             {
2026-06-21T11:53:56.1473563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1473648Z               "line": 2626
2026-06-21T11:53:56.1473725Z             }
2026-06-21T11:53:56.1473800Z           ]
2026-06-21T11:53:56.1473887Z         },
2026-06-21T11:53:56.1473973Z         "int": {
2026-06-21T11:53:56.1474068Z           "complete": false,
2026-06-21T11:53:56.1474163Z           "evidence": []
2026-06-21T11:53:56.1474250Z         },
2026-06-21T11:53:56.1474329Z         "unit": {
2026-06-21T11:53:56.1474420Z           "complete": true,
2026-06-21T11:53:56.1474512Z           "evidence": [
2026-06-21T11:53:56.1474598Z             {
2026-06-21T11:53:56.1474700Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1474795Z               "line": 10525
2026-06-21T11:53:56.1474882Z             }
2026-06-21T11:53:56.1474961Z           ]
2026-06-21T11:53:56.1475046Z         }
2026-06-21T11:53:56.1475127Z       }
2026-06-21T11:53:56.1475214Z     },
2026-06-21T11:53:56.1475295Z     {
2026-06-21T11:53:56.1475389Z       "id": "REQ-UPD-8",
2026-06-21T11:53:56.1477875Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T11:53:56.1478209Z       "requiredStages": [
2026-06-21T11:53:56.1478294Z         "impl",
2026-06-21T11:53:56.1478382Z         "unit"
2026-06-21T11:53:56.1478467Z       ],
2026-06-21T11:53:56.1478552Z       "stages": {
2026-06-21T11:53:56.1478643Z         "doc": {
2026-06-21T11:53:56.1478743Z           "complete": false,
2026-06-21T11:53:56.1478829Z           "evidence": []
2026-06-21T11:53:56.1478919Z         },
2026-06-21T11:53:56.1479082Z         "impl": {
2026-06-21T11:53:56.1479191Z           "complete": true,
2026-06-21T11:53:56.1479282Z           "evidence": [
2026-06-21T11:53:56.1479401Z             {
2026-06-21T11:53:56.1479534Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1479621Z               "line": 77
2026-06-21T11:53:56.1479702Z             },
2026-06-21T11:53:56.1479777Z             {
2026-06-21T11:53:56.1479902Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1479998Z               "line": 49
2026-06-21T11:53:56.1480078Z             },
2026-06-21T11:53:56.1480163Z             {
2026-06-21T11:53:56.1480272Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1480364Z               "line": 152
2026-06-21T11:53:56.1480449Z             },
2026-06-21T11:53:56.1480529Z             {
2026-06-21T11:53:56.1480650Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1480745Z               "line": 215
2026-06-21T11:53:56.1480839Z             },
2026-06-21T11:53:56.1480927Z             {
2026-06-21T11:53:56.1481041Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1481126Z               "line": 230
2026-06-21T11:53:56.1481212Z             },
2026-06-21T11:53:56.1481298Z             {
2026-06-21T11:53:56.1481417Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1481512Z               "line": 247
2026-06-21T11:53:56.1481589Z             },
2026-06-21T11:53:56.1481665Z             {
2026-06-21T11:53:56.1481784Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1481881Z               "line": 269
2026-06-21T11:53:56.1481966Z             },
2026-06-21T11:53:56.1482046Z             {
2026-06-21T11:53:56.1482161Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1482248Z               "line": 66
2026-06-21T11:53:56.1482332Z             },
2026-06-21T11:53:56.1482412Z             {
2026-06-21T11:53:56.1482532Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1482622Z               "line": 154
2026-06-21T11:53:56.1482706Z             },
2026-06-21T11:53:56.1482791Z             {
2026-06-21T11:53:56.1482897Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1482997Z               "line": 2430
2026-06-21T11:53:56.1483077Z             },
2026-06-21T11:53:56.1483164Z             {
2026-06-21T11:53:56.1483264Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1483345Z               "line": 2493
2026-06-21T11:53:56.1483430Z             },
2026-06-21T11:53:56.1483512Z             {
2026-06-21T11:53:56.1483622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1483706Z               "line": 2503
2026-06-21T11:53:56.1483789Z             },
2026-06-21T11:53:56.1483865Z             {
2026-06-21T11:53:56.1483970Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1484065Z               "line": 2510
2026-06-21T11:53:56.1484146Z             },
2026-06-21T11:53:56.1484331Z             {
2026-06-21T11:53:56.1484433Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1484618Z               "line": 2627
2026-06-21T11:53:56.1484709Z             },
2026-06-21T11:53:56.1484791Z             {
2026-06-21T11:53:56.1484894Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1484985Z               "line": 480
2026-06-21T11:53:56.1485077Z             },
2026-06-21T11:53:56.1485149Z             {
2026-06-21T11:53:56.1485260Z               "path": "crates/xtask/src/main.rs",
2026-06-21T11:53:56.1485355Z               "line": 494
2026-06-21T11:53:56.1485442Z             }
2026-06-21T11:53:56.1485526Z           ]
2026-06-21T11:53:56.1485606Z         },
2026-06-21T11:53:56.1485692Z         "int": {
2026-06-21T11:53:56.1485788Z           "complete": false,
2026-06-21T11:53:56.1485878Z           "evidence": []
2026-06-21T11:53:56.1485959Z         },
2026-06-21T11:53:56.1486045Z         "unit": {
2026-06-21T11:53:56.1486140Z           "complete": true,
2026-06-21T11:53:56.1486235Z           "evidence": [
2026-06-21T11:53:56.1486321Z             {
2026-06-21T11:53:56.1486451Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T11:53:56.1486545Z               "line": 476
2026-06-21T11:53:56.1486636Z             },
2026-06-21T11:53:56.1486718Z             {
2026-06-21T11:53:56.1486851Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T11:53:56.1486937Z               "line": 580
2026-06-21T11:53:56.1487028Z             },
2026-06-21T11:53:56.1487113Z             {
2026-06-21T11:53:56.1487218Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1487314Z               "line": 10527
2026-06-21T11:53:56.1487386Z             },
2026-06-21T11:53:56.1487470Z             {
2026-06-21T11:53:56.1487561Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1487653Z               "line": 10549
2026-06-21T11:53:56.1487738Z             }
2026-06-21T11:53:56.1487823Z           ]
2026-06-21T11:53:56.1487912Z         }
2026-06-21T11:53:56.1487994Z       }
2026-06-21T11:53:56.1488074Z     },
2026-06-21T11:53:56.1488159Z     {
2026-06-21T11:53:56.1488259Z       "id": "REQ-UPD-9",
2026-06-21T11:53:56.1490919Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T11:53:56.1491028Z       "requiredStages": [
2026-06-21T11:53:56.1491128Z         "doc",
2026-06-21T11:53:56.1491234Z         "impl",
2026-06-21T11:53:56.1491324Z         "unit"
2026-06-21T11:53:56.1491414Z       ],
2026-06-21T11:53:56.1491501Z       "stages": {
2026-06-21T11:53:56.1491591Z         "doc": {
2026-06-21T11:53:56.1491676Z           "complete": true,
2026-06-21T11:53:56.1491777Z           "evidence": [
2026-06-21T11:53:56.1491863Z             {
2026-06-21T11:53:56.1491958Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1492048Z               "line": 93
2026-06-21T11:53:56.1492131Z             },
2026-06-21T11:53:56.1492216Z             {
2026-06-21T11:53:56.1492316Z               "path": "docs/MANIFEST.md",
2026-06-21T11:53:56.1492397Z               "line": 285
2026-06-21T11:53:56.1492483Z             }
2026-06-21T11:53:56.1492564Z           ]
2026-06-21T11:53:56.1492649Z         },
2026-06-21T11:53:56.1492836Z         "impl": {
2026-06-21T11:53:56.1492930Z           "complete": true,
2026-06-21T11:53:56.1493020Z           "evidence": [
2026-06-21T11:53:56.1493186Z             {
2026-06-21T11:53:56.1493332Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1493409Z               "line": 128
2026-06-21T11:53:56.1493495Z             },
2026-06-21T11:53:56.1493581Z             {
2026-06-21T11:53:56.1493699Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1493782Z               "line": 533
2026-06-21T11:53:56.1493862Z             },
2026-06-21T11:53:56.1493942Z             {
2026-06-21T11:53:56.1494068Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1494148Z               "line": 459
2026-06-21T11:53:56.1494229Z             },
2026-06-21T11:53:56.1494315Z             {
2026-06-21T11:53:56.1494430Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1494516Z               "line": 505
2026-06-21T11:53:56.1494610Z             },
2026-06-21T11:53:56.1494688Z             {
2026-06-21T11:53:56.1494802Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1494897Z               "line": 928
2026-06-21T11:53:56.1494973Z             },
2026-06-21T11:53:56.1495065Z             {
2026-06-21T11:53:56.1495178Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T11:53:56.1495269Z               "line": 302
2026-06-21T11:53:56.1495356Z             },
2026-06-21T11:53:56.1495440Z             {
2026-06-21T11:53:56.1495540Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1495637Z               "line": 5675
2026-06-21T11:53:56.1495723Z             },
2026-06-21T11:53:56.1495802Z             {
2026-06-21T11:53:56.1495911Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1495992Z               "line": 5720
2026-06-21T11:53:56.1496077Z             },
2026-06-21T11:53:56.1496161Z             {
2026-06-21T11:53:56.1496267Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1496362Z               "line": 5857
2026-06-21T11:53:56.1496443Z             },
2026-06-21T11:53:56.1496533Z             {
2026-06-21T11:53:56.1496639Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1496720Z               "line": 5878
2026-06-21T11:53:56.1496800Z             },
2026-06-21T11:53:56.1496891Z             {
2026-06-21T11:53:56.1497002Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1497092Z               "line": 5901
2026-06-21T11:53:56.1497182Z             },
2026-06-21T11:53:56.1497269Z             {
2026-06-21T11:53:56.1497377Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1497463Z               "line": 5928
2026-06-21T11:53:56.1497550Z             }
2026-06-21T11:53:56.1497641Z           ]
2026-06-21T11:53:56.1497715Z         },
2026-06-21T11:53:56.1497802Z         "int": {
2026-06-21T11:53:56.1497893Z           "complete": false,
2026-06-21T11:53:56.1497988Z           "evidence": []
2026-06-21T11:53:56.1498079Z         },
2026-06-21T11:53:56.1498160Z         "unit": {
2026-06-21T11:53:56.1498256Z           "complete": true,
2026-06-21T11:53:56.1498345Z           "evidence": [
2026-06-21T11:53:56.1498431Z             {
2026-06-21T11:53:56.1498559Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T11:53:56.1498657Z               "line": 259
2026-06-21T11:53:56.1498733Z             },
2026-06-21T11:53:56.1498814Z             {
2026-06-21T11:53:56.1498939Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T11:53:56.1499104Z               "line": 657
2026-06-21T11:53:56.1499187Z             },
2026-06-21T11:53:56.1499267Z             {
2026-06-21T11:53:56.1499391Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T11:53:56.1499487Z               "line": 1107
2026-06-21T11:53:56.1499592Z             },
2026-06-21T11:53:56.1499681Z             {
2026-06-21T11:53:56.1499783Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1499996Z               "line": 7565
2026-06-21T11:53:56.1500092Z             }
2026-06-21T11:53:56.1500193Z           ]
2026-06-21T11:53:56.1500354Z         }
2026-06-21T11:53:56.1500480Z       }
2026-06-21T11:53:56.1500573Z     },
2026-06-21T11:53:56.1500650Z     {
2026-06-21T11:53:56.1500785Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-21T11:53:56.1506119Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-21T11:53:56.1506249Z       "requiredStages": [
2026-06-21T11:53:56.1506339Z         "doc",
2026-06-21T11:53:56.1506424Z         "impl",
2026-06-21T11:53:56.1506509Z         "unit"
2026-06-21T11:53:56.1506590Z       ],
2026-06-21T11:53:56.1506674Z       "stages": {
2026-06-21T11:53:56.1506759Z         "doc": {
2026-06-21T11:53:56.1506846Z           "complete": true,
2026-06-21T11:53:56.1506932Z           "evidence": [
2026-06-21T11:53:56.1507022Z             {
2026-06-21T11:53:56.1507122Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1507228Z               "line": 342
2026-06-21T11:53:56.1507314Z             }
2026-06-21T11:53:56.1507398Z           ]
2026-06-21T11:53:56.1507486Z         },
2026-06-21T11:53:56.1507576Z         "impl": {
2026-06-21T11:53:56.1507666Z           "complete": true,
2026-06-21T11:53:56.1507761Z           "evidence": [
2026-06-21T11:53:56.1507857Z             {
2026-06-21T11:53:56.1507981Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T11:53:56.1508085Z               "line": 293
2026-06-21T11:53:56.1508168Z             },
2026-06-21T11:53:56.1508252Z             {
2026-06-21T11:53:56.1508367Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.1508458Z               "line": 683
2026-06-21T11:53:56.1508549Z             },
2026-06-21T11:53:56.1508629Z             {
2026-06-21T11:53:56.1508745Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.1508830Z               "line": 859
2026-06-21T11:53:56.1508924Z             },
2026-06-21T11:53:56.1509090Z             {
2026-06-21T11:53:56.1509260Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.1509359Z               "line": 777
2026-06-21T11:53:56.1509441Z             },
2026-06-21T11:53:56.1509533Z             {
2026-06-21T11:53:56.1509636Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:56.1509927Z               "line": 788
2026-06-21T11:53:56.1510013Z             }
2026-06-21T11:53:56.1510091Z           ]
2026-06-21T11:53:56.1510261Z         },
2026-06-21T11:53:56.1510348Z         "int": {
2026-06-21T11:53:56.1510438Z           "complete": false,
2026-06-21T11:53:56.1510529Z           "evidence": []
2026-06-21T11:53:56.1510609Z         },
2026-06-21T11:53:56.1510706Z         "unit": {
2026-06-21T11:53:56.1510814Z           "complete": true,
2026-06-21T11:53:56.1510909Z           "evidence": [
2026-06-21T11:53:56.1510992Z             {
2026-06-21T11:53:56.1511101Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.1511186Z               "line": 1394
2026-06-21T11:53:56.1511277Z             },
2026-06-21T11:53:56.1511359Z             {
2026-06-21T11:53:56.1511472Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T11:53:56.1511563Z               "line": 1438
2026-06-21T11:53:56.1511640Z             },
2026-06-21T11:53:56.1511731Z             {
2026-06-21T11:53:56.1511843Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.1511944Z               "line": 2554
2026-06-21T11:53:56.1512035Z             },
2026-06-21T11:53:56.1512115Z             {
2026-06-21T11:53:56.1512234Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T11:53:56.1512326Z               "line": 2621
2026-06-21T11:53:56.1512416Z             },
2026-06-21T11:53:56.1512501Z             {
2026-06-21T11:53:56.1512622Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T11:53:56.1512716Z               "line": 1002
2026-06-21T11:53:56.1512796Z             }
2026-06-21T11:53:56.1512873Z           ]
2026-06-21T11:53:56.1512965Z         }
2026-06-21T11:53:56.1513045Z       }
2026-06-21T11:53:56.1513125Z     },
2026-06-21T11:53:56.1513212Z     {
2026-06-21T11:53:56.1513312Z       "id": "REQ-WHOAMI-1",
2026-06-21T11:53:56.1514968Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T11:53:56.1515086Z       "requiredStages": [
2026-06-21T11:53:56.1515169Z         "doc",
2026-06-21T11:53:56.1515254Z         "impl",
2026-06-21T11:53:56.1515339Z         "unit"
2026-06-21T11:53:56.1515430Z       ],
2026-06-21T11:53:56.1515517Z       "stages": {
2026-06-21T11:53:56.1515593Z         "doc": {
2026-06-21T11:53:56.1515697Z           "complete": true,
2026-06-21T11:53:56.1515783Z           "evidence": [
2026-06-21T11:53:56.1515879Z             {
2026-06-21T11:53:56.1515974Z               "path": "CONTEXT.md",
2026-06-21T11:53:56.1516064Z               "line": 707
2026-06-21T11:53:56.1516156Z             }
2026-06-21T11:53:56.1516241Z           ]
2026-06-21T11:53:56.1516336Z         },
2026-06-21T11:53:56.1516423Z         "impl": {
2026-06-21T11:53:56.1516518Z           "complete": true,
2026-06-21T11:53:56.1516608Z           "evidence": [
2026-06-21T11:53:56.1516699Z             {
2026-06-21T11:53:56.1516800Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1516885Z               "line": 3190
2026-06-21T11:53:56.1516969Z             },
2026-06-21T11:53:56.1517055Z             {
2026-06-21T11:53:56.1517178Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1517268Z               "line": 3218
2026-06-21T11:53:56.1517358Z             }
2026-06-21T11:53:56.1517439Z           ]
2026-06-21T11:53:56.1517521Z         },
2026-06-21T11:53:56.1517611Z         "int": {
2026-06-21T11:53:56.1517701Z           "complete": false,
2026-06-21T11:53:56.1517798Z           "evidence": []
2026-06-21T11:53:56.1517888Z         },
2026-06-21T11:53:56.1517973Z         "unit": {
2026-06-21T11:53:56.1518150Z           "complete": true,
2026-06-21T11:53:56.1518245Z           "evidence": [
2026-06-21T11:53:56.1518398Z             {
2026-06-21T11:53:56.1518502Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1518597Z               "line": 7847
2026-06-21T11:53:56.1518680Z             },
2026-06-21T11:53:56.1518761Z             {
2026-06-21T11:53:56.1518860Z               "path": "crates/spt/src/cli.rs",
2026-06-21T11:53:56.1519033Z               "line": 7900
2026-06-21T11:53:56.1519118Z             }
2026-06-21T11:53:56.1519199Z           ]
2026-06-21T11:53:56.1519290Z         }
2026-06-21T11:53:56.1519376Z       }
2026-06-21T11:53:56.1519456Z     }
2026-06-21T11:53:56.1519536Z   ],
2026-06-21T11:53:56.1519622Z   "findings": []
2026-06-21T11:53:56.1519708Z }
